- 继承的概述
- 继承的格式
- 继承的好处
- 继承的弊端
- Java中继承的特点
- 继承的注意事项
- 什么时候使用继承
- Java中继承的成员关系
- super和this关键字
继承的概述
多个类中存在相同属性和行为时,将这些内容抽取到单独的一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
单独的这个类成为父类,基类或者超类;这多个类可以成为子类或者派生类。
有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,还可以定义自己的新成员。
继承的格式
通过extend关键字可以实现类与类的继承
class 子类名 extends 父类名 {}
继承的好处
1、提高了代码的复用性(多个类相同的成员可以放在同一个类中)
2、提高了代码的维护性(如果功能的代码需要修改,修改一处即可)
3、让类与类之间产生了关系,是多态的前提(其实这也是继承的一个弊端:类的耦合性很强)
继承的弊端
1、让类的耦合性增强,这样某个类的改变,就会影响其他和该类相关的类
2、打破了封装性
Java中继承的特点
1、Java只支持单继承
2、Java中可以多层继承
继承的注意事项
1、子类只能继承父类的所有非私有成员(成员方法和成员变量),不能继承父类的私有变量
2、子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法
3、不要为了部分功能而去继承
什么时候使用继承
继承中类之间体现的是:“is a”的关系
Java继承中的成员关系
1、成员变量
子类的成员变量名称和父类中的成员变量名称不一样,这个太简单
子类的成员变量名称和父类中的成员变量名称一样,这个怎么访问呢?
子类的方法访问变量的查找顺序:
在子类方法的局部范围找,有就使用。 在子类的成员范围找,有就使用。 在父类的成员范围找,有就使用。 找不到,就报错。
2、构造函数
子类的构造方法默认会去访问父类的无参构造方法,是为了子类访问父类数据的初始化
父类中如果没有无参构造方法,怎么办?
子类通过super去明确调用带参构造 子类通过this调用本身的其他构造,但是一定会有一个去访问了父类的构造 让父类提供无参构造
3、成员方法
子类的成员方法和父类中的成员方法名称不一样,这个太简单
子类的成员方法和父类中的成员方法名称一样,这个怎么访问呢?
通过子类对象访问一个方法的查找顺序: 在子类中找,有就使用 在父类中找,有就使用 找不到,就报错
super和this关键字
1、super和this的用法
this代表本类对应的引用
super代表父类存储空间的标识(可以理解为父类引用)
2、用法
访问成员变量(this.成员变量 super.成员变量)
访问构造方法(this(…) super(…))
访问成员方法(this.成员方法() super.成员方法())