继承的特点
- 继承是单继承,不支持多继承
- 继承支持多级继承
- 顶级父类是Object类,所以每个类都会默认继承Object类
- 子类和父类是一对相对概念
继承的内容
构造方法 | 非私有 不能 | private 不能 |
---|---|---|
成员变量 | 非私有 能 | private 能 |
成员方法 | 虚方法表 能 | 否则 不能 |
成员变量的访问特点
就近原则:谁离我近,我就用谁
先在局部位置找,本类成员位置找,父类成员位置找,逐级往上。
成员方法的访问特点
直接调用满足就近原则,super调用,直接访问父类
方法的重写:当父类方法不能满足子类现在的需求时,需要进行方法重写(子类会覆盖从父类那里继承的虚方法表中的对应方法,只有被加到虚方法表中的方法可以被重写)
书写格式:在继承体系中,子类出现和父类一模一样的方法声明
@Override重写注释:
- @Override是放在重写后的方法上,校验子类重写时语法是否正确
- 加上注解后如果有红色波浪线,表示语法错误
构造方法的访问特点
- 父类中的构造方法不会被子类继承,但可以通过super();调用
- 子类中所有的构造方法默认先访问父类中的无参构造,再执行自己
(子类在初始化之前,一定要调用父类构造方法先完成父类数据空间的初始化) - 子类构造方法中的第一行有一个默认的super();去访问父类的无参构造
调用父类有参构造方法:必须手动写super进行调用
this,super使用总结
- this:理解为一个变量,表示当前方法调用者的地址值
- super:代表父类存储空间
关键字 | 访问成员变量 | 访问成员方法 | 访问构造方法 |
---|---|---|---|
this | this.成员变量 访问本类成员变量 | this.成员方法() 访问本类成员方法 | this(…) 访问本类构造方法 |
super | super.成员变量 访问父类成员变量 | super.成员方法() 访问父类成员方法 | super(…) 访问父类构造方法 |