Java继承

Java继承教程

我们了解到,面向对象的基本特性有封装、继承和多态。面向对象中,类是将所有共性的东西封装。我们考虑一种场景,自然界里面有动物,动物里面有熊、老虎、鸭等等,他们有一些共性的东西,有毛色、有雌雄、能够吃饭、喝水等等。

这些共性的东西如果放在类里面,是不是在定义每个动物的时候,都需要重写一遍呢?这个时候我们可以将共性的东西抽取出来,变成一个父类,让一些子类来继承,这样就不需要进行重复定义动物的属性或者方法来,只需要在子类里面进行定义就可以了。

Java 语言 的继承只能够是单继承,不能够多继承。继承的子类有的时候也会被叫为父类的派生类。

Java继承定义

语法

class 父类{} //定义一个父类 class 子类 extends 父类{} //子类继承父类

参数

参数 说明
父类 定义一个类,和定义普通的类一样
子类 定义一个类,和定义普通的类一样
extends 继承用到的关键字

说明

定义类的时候,和定义普通类一样,普通类的定义 中,我们类里面有属性和方法。继承的话,必须要有两个类,子类和父类。

案例

我们定义一个父类 Fathcer.java

package com.haicoder.net.extend; public class FatherClass { //名字 private String name; //年龄 private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public void info(){ System.out.println("name : " + this.name + " age : " + this.age); } }

定义一个子类 ChildClass.java

package com.haicoder.net.extend; public class ChildClass extends FatherClass { private String ownerProperty; public String getOwnerProperty() { return ownerProperty; } public void setOwnerProperty(String ownerProperty) { this.ownerProperty = ownerProperty; } }

调用子类测试类

package com.haicoder.net.extend; public class TestMain { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)"); ChildClass childClass = new ChildClass(); childClass.setName("嗨客"); childClass.setAge(21); childClass.info(); } }

运行结果如下:

01 java继承.png

在运行结果中,我们看到,我们子类没有定义父类中的任何属性,但是在测试类里面,我们定义了一个子类的对象,然后调用了父类里面是 public 类型的方法,比如 setName,setAge 和 info 方法,子类中都可以使用。

Java继承总结

在 Java 语言中,继承是单继承的,也就说一个子类只能够继承一个父类,而一个父类可以有多个子类。比如定义一个父类 A。有两个子类 B 和 C。那么 B 可以继承 A,C 也可以继承 A。这个时候 A 是 B 和 C 的父类,而 B 和 C 只能够有 A 一个父类。

子类可以使用父类中的 拥有权限 的属性和方法。它不能够直接访问父类中的 private 定义的属性和方法。只能够通过父类提供的其他操作来访问私有的属性或者方法。