继承回顾(共性抽取)
作用
子类可以拥有父类的内容,也可以有自己专有的内容。从而达到代码复用的效果。
子类定义的格式:public class 子类名 extends 父类名{}
。
重名情况分析
-
在父子类的继承关系中,如果成员变量重名,则有两种访问方式:
-
直接通过子类对象访问:
创建对象时等号左边是谁,就优先用谁的变量,没有则向上找。(从子到父)
-
间接通过成员方法访问成员变量:
该方法属于谁,就优先用谁的变量,没有则向上找。
-
-
成员方法重名:
- 创建的对象是谁,即new 的右边,就优先用谁,没有则向上找父类。
方法重写(override)
特点:
- 在继承关系中,方法名和参数列表都一样,而重载(overload)参数列表不一样。
- 创建的是子类对象,则优先用子类方法。
注意:
- 注解
@Override
可以写在方法前一行,用来检测重写是否正确有效。 - 子类方法的返回值必须小于等于父类方法的返回值范围。
- 子类方法的权限必须大于等于父类方法的权限修饰符。public>protected>(default)(留空)>private
设计原则(继承的意义)
对已经投入使用的类,我们尽量不去修改它,而是定义一个新的子类,使用super.方法名()
来重复利用其中的共性内容,并添加改动新内容。
父子类构造方法访问特点
-
子类构造方法中有一个默认隐含的
super();
调用,因此一定会先调用父类构造,后执行子类构造。当在构造方法中使用this调用了其他有参构造时,默认的
super();
被替代。 -
子类构造可以显式地通过super调用父类地重载构造。
-
子类中父类地super构造调用只能有一个,且必须首先声明。
继承的三个特点
- Java语言是单继承的。
- 可以多级继承。
- 一个父类可以有多个子类。