一、继承的概述
1、由来
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
其中,多个类可以称为 子类,单独的那一个类称为 父类、超类(super class)或 基类。
继承描述的是事物之间的所属关系,这种关系是 : is - a 的关系。(子类就是一个父类:子类 is a 父类)
如上图:兔子属于食草动物,食草动物属于动物。可见,父类是通用,子类更具体。通过继承,可以使多种事物之间形成一种关系体系。
2、定义
继承:就是子类继承父类的属性和行为。使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。
3、好处
a、提高代码的复用性。
b、类与类之间产生了关系,是多态的前提。
二、继承的格式
通过 extends 关键字,可以声明一个子类继承另外一个父类。
定义格式:
// 定义父类
class 父类名称 {
...
}
// 定义子类
class 子类名称 extends 父类名称 {
...
}
三、继承后的特点——成员变量
当类之间产生了关系后,其中各类中的成员变量会产生影响,分为下面两类来讨论:
1、成员变量不重名
如果子类父类中出现不重名的成员变量,这时候的访问是没有影响的。
Demo:
1 // 父类
2 class Fu {
3 // Fu中的成员变量。
4 int num = 5;
5 }
6 // 子类
7 class Zi extends Fu {
8 // Zi中的成员变量
9 int num2 = 6;
10 // Zi中的成员方法
11 public void show() {
12 // 访问父类中的num,
13 System.out.println("Fu num="+num); // 本类中没有,继承而来,所以直接访问。
14 // 访问子类中的num2
15 System.out.println("Zi num2="+num2); // 本类中有,访问本类中num2
16 }
17 }
18 // 测试类
19 class Test{
20 public static void main(String[] args) {
21 // 创建子类对象
22 Zi z = new Zi();
23 // 调用子类中的show方法
24 z.show();
25 }
26 }
27
28 演示结果:
29 Fu num = 5
30 Zi num2 = 6
2、成员变量重名
如果子类父类中出现重名的成员变量,这时候的访问是有影响的。
Demo:
四、继承后的特点——成员方法
五、继承后的特点——构造方法
六、super 和 this
七、继承的特点
七、