继承:extends
**继承概述**
继承:让类与类之间产生关系(子父类关系),子类可以直接使用父类中非私有的成员
**继承的格式**
格式:public class 子类名 extends 父类名{}
范例:public class Zi extends Fu{}
Fu:是父类,也被称为基类,超类
Zi:是子类,也被称为派生类
**继承的好处和弊端**
继承的好处
提高了代码的复用性
提高了代码的维护性
让类与类之间产生了关系,是多态的前提
继承的弊端
继承是侵入性的
降低了代码的灵活性
继承关系,导致子类必须拥有父类非私有属性和方法,让子类自由的世界中多了些约束
增强了代码的耦合性
代码与代码之间存在关联都可以将其称之为“耦合”
什么时候使用继承?
当类与类之间,存在相同(共性)的内容,并且产生了is a 的关系,就可以考虑使用继承,来优化代码。
举例:
学生:姓名,年龄 项目经理:姓名,工号,工资
老师:姓名,年龄 程序员:姓名,工号,工资
------------------------
人:姓名,年龄 员工:姓名,工号,工资
继承的特点
java只支持单继承,不支持多继承,但支持多层继承。
继承的成员变量访问特点 extends继承
在子类方法中访问一个变量 子类局部范围找 子类成员范围找 父类成员范围找
注意:如果子父中,出现了重名的成员变量,通过就近原则,会优先使用子类的 如果一定要使用父类的,可以通过super关键字,进行区分。
继承: 继承的成员变量访问特点 super 关键字的用法和this关键字的用法相似 this:代表本类对象的引用 super:代表父类存储空间的标识(可以理解为父类对象引用)
关键字 | 访问成员变量 | 访问成员方法 | 访问构造方法 |
this | this.成员变量访问本类成员变量 | this.成员方法访问本类成员方法 | this访问本类构造方法访问本类构造方法 |
super | super.成员变量 访问父类成员变量 | super.成员方法 访问父类成员方法 | super访问父类构造方法 |
继承中成员方法的访问特点
通过子类对象访问一个方法
子类成员范围找
父类成员范围找
方法重写
方法重写概述
在继承体系中,子类出现了和父类中一模一样的方法声明
方法重写的应用场景
当子类需要父类的功能,而功能主体子类有自己特有内容,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。
注意:
方法重写:在继承体系中,子类出现了和父类一模一样的方法声明(方法名,参数列表,返回值类型)
方法重载:在同一个类中,方法名相同,参数列表不同,与返回值无关。