一、继承
继承是面向对象的三大特征之一
语法
深入理解继承
继承是面向对象三大特征之一,是Java中实现代码重用的重要手段之一。
Java只支持单继承,即每个类只能有一个直接父类。
子类可以从父类中继承哪些东西
- 继承public和protected修饰的属性和方法,无论子类和父类是否在同一个包里
- 继承默认权限修饰符修饰的属性和方法,但是子类和父类必须在同一个包里
不能被继承的父类成员
- private成员
- 子类与父类不在同包,使用默认访问权限的成员
- 构造方法
访问修饰符protected
- 可以修饰属性和方法
- 本类、同包、子类可以访问
作用域修饰符 | 同一个类中 | 同一个包中 | 子类中 | 任何地方 |
private | 可以 | 不可以 | 不可以 | 不可以 |
默认修饰符 | 可以 | 可以 | 不可以 | 不可以 |
protected | 可以 | 可以 | 可以 | 不可以 |
public | 可以 | 可以 | 可以 | 可以 |
子类访问父类成员
- 访问父类构造方法
super(); super(name);
- 访问父类属性
super.name;
- 访问父类方法
super.print();
- super代表对当前对象的直接父类对象的默认引用
- super必须出现在子类(子类的构造方法)中,且必须是第一句
- 不可以访问父类中定义为private的属性和方法
多重继承关系的初始化顺序
二、继承关系中的构造方法
- 如果子类的构造方法中没有通过super显示调用父类的有参构造方法,也没有通过this显示调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法
- 如果子类的构造方法中通过super显示调用父类的有参构造,则将执行父类相应的构造方法,而不执行父类的无参构造方法
- 如果子类的构造方法中通过this显示调用自身的其他构造方法,则在相应构造方法中应用以上两条规则
三、方法重写
在子类中可以根据需求对从父类继承的方法进行重写,成为方法的重写或方法的覆盖
方法重写的规则
- 重写方法和被重写方法的方法名必须一样
- 重写方法和被重写方法的参数列表必须一样
- 重写方法的返回值类型和被重写方法的返回值类型必须相同或是其子类
- 重写方法不能缩小被重写方法的访问权限
方法重载和方法重写的关系
位置 | 方法名 | 参数表 | 返回值 | ||
方法重写 | 子类 | 相同 | 相同 | 相同或是其子类 | |
方法重载 | 同类 | 相同 | 不相同 | 无关 |