1.1:继承概述
定义:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
- 这多个类称为子类,单独这个类称为父类或者超类。
- 子类可以直接访问父类中非私有的成员变量与成员方法。
格式:通过 extends 关键字让类与类之间产生继承关系
class SubDemo extends Demo{}
优点:
- 继承的出现提高了代码的复用性。
- 继承的出现让类与类之间产生了关系,是多态的前提之一。
弊端:使类与类之间产生了更强的耦合性
特点:
- java只支持单继承不支持多继承。
- java支持多层继承。
- 任何类都直接或者间接继承自Object类。
注意事项:
- 不要为了某个功能而去继承,需要满足”is a”的关系。
1.2:super关键字
super关键字:代表父类的内存空间。
- 使用super区分子父类所属,用法与this类似
- 子类的构造方法中均有默认的super()
成员变量:访问满足就近原则
- 局部变量>成员变量>父类成员变量>父类的父类
成员方法:
- 子类可以直接使用父类的非私有方法。
- 当子父类方法一样时,方法重写。
构造方法:
- 构造方法不继承,子类的构造默认调用父类构造。
- 父类构造方法负责对成员变量初始化供子类对象使用,而不是创建父类对象。
- 父类没有无参构造时,子类需要手动调用其他父类构造。
1.3:方法重写
定义:子类中出现与父类一模一样的方法时,出现方法重写
- 子类方法访问权限需要大于等于父类方法访问权限
- 静态只能覆盖静态
- 返回值类型:
- 基本类型/void:必须相同
- 引用类型:子类返回值类型必须为父类返回值类型的子类
- 函数名相同
- 参数列表相同
应用:子类需要父类功能,但又在功能上又有多增加时,可以复写父类方法。子类比父类更强大。
注意事项:
- 父类中私有方法不可以被覆盖。
- 在子类中想调用父类自己的方法可以使用super关键字
1.4:继承小结
- 子父类实例化过程
- 子类中所有的构造函数默认都会访问父类中空参数的构造函数,原因是构造方法中第一行默认的super()
- 子类具备父类中的数据,所以需要先明确父类是如何初始化的,即调用父类的构造方法。父类存储空间优于子类对象。
- 大致顺序
1.5:final关键字
定义:最终修饰符,修饰类与类的成员。
作用:
- 修饰类,类不可以被继承。
- 修饰方法,方法不可以被重写。
- 修饰变量,变量的值不能更改,成为了常量:
- 常量必须有值。
- 常量的值只能赋值一次。
- 引用类型常量可以更改其堆内存对象中的值。
- 内部类只能访问被外部类中被final修饰的局部变量。
(以上:就是继承的知识,接下来我们讲多态)