继承 用extends关键字,可以让一个类和另一个类建立起继承关系
格式: public class 子类 extends 父类{}
好处: 可以将多个子类中重复的代码提取到父类中,提高代码复用性
子类可以在父类的基础上,增加其他功能,让子类更强大
什么时候用继承?
当类与类之间,有相同的内容,并满足子类是父类的一种,就可以考虑继承优化
继承后子类的特点
子类可以得到父类的属性和行为并可以使用
子类可以在父类的基础上新增其他功能,让子类更强大
继承的特点
java只支持单继承,不支持多继承,但是支持多层继承
(简单的说,就是只能有一个爸爸,可以有爷爷..)(也叫间接父类)
java中所有的类都直接或者间接继承于object类
继承中成员变量的访问特点
就近原则,先局部,后成员,再就是父类的成员变量...
如果想跳过局部,找成员变量,有this关键字
如果想跳过局部和成员,找父类的成员变量,有super关键字
方法重写
当父类方法不能满足子类现在的需求时,要进行方法重写
格式: 子类和父类中一模一样的方法声明,就称这个方法是重写的方法
重写注解: @Override 放在重写方法上的,校验子类重写是否正确
本质: 覆盖虚方法表中的方法
注意事项: 重写方法的名称和形参要和父类一致
重写方法时,访问权限要大于等于父类
重写方法时,返回值类型子类要小于等于父类
私有方法不能重写
子类不能 重写父类的静态方法
构造方法的访问特点
父类的构造方法不能被子类继承
子类中所有的构造方法默认先访问父类中的无参构造,再执行自己
原因: 子类再初始化的时候,会使用父类中的数据,父类没有初始化,
子类就无法使用父类数据
子类初始化之前,一定要调用父类构造方法先完成父类数据的初始化
怎么调用父类构造方法的?
子类构造方法的第一行默认时super(),不写也存在,且在第一行
如果想调用父类有参构造,必须手写super进行调用