继承的概述
继承是面向对象三大特征之一,在Java中指的是一个类可以继承自另一个类,被继承的类叫做父类,继承其他类的类叫做子类;继承后,子类自动拥有父类可继承的属性和方法,还可以在子类中重新定义这些属性和方法,子类也可以追加其他属性和其他方法。
继承的格式
格式:public class 子类名 extends 父类名{ }
范例:public class Zi extends Fu{ }
Fu:是父类,也被称为基类,超类
Zi:是子类,也被称为派生类
继承中,子类的特点
子类自动拥有父类可继承的属性和方法
子类还可以有自己特有的内容
继承的好处和弊端
- 继承的好处
- 提高的代码的复用性(多个类相同的成员可以放到同一个类中)
- 提高了代码的维护性(如果方法的代码需要修改,修改一处即可)
- 继承的弊端
- 继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时,子类也不得不跟着变化,消弱了子类的独立性
继承后的特点--非私有成员变量
- 成员变量不重名
- 如果子类父类出现不重名的成员变量,这时的访问是没有影响的
- 成员变量重名
- 如果子类父类中出现重名的成员变量,这时的访问是有影响的
-
super内存图
- this:代表当前对象的引用,哪个对象调用的,就表示哪个对象
- super:代表父类的存储空间标识(可以理解为父类的引用)
继承后的特点--非私有成员方法
- 成员方法不重名
- 如果子类父类中出现不重名的成员方法,这时的调用是没有影响的。对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法
-
成员方法重名--重写(Override)
- 如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写(Override)
- 方法重写:子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,称为重写或者复写;声明不变,重新实现。
- 重写应用
- 当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。
继承后的特点--构造方法
- 继承后,构造方法的特点
- 构造方法不能被继承
- 构造方法的作用是初始化成员变量的。所以子类的初始化过程,必须先执行父类的初始化动作
- 子类的构造方法中默认有一个super(),表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用。
- 子类的构造方法,必须调用到父类的构造方法
this和super总结
继承的特点
- Java中类只支持单继承,不支持多继承
- Java支持多层继承
- 多个类可以继承一个父类