继承的理解
父类中具备子类对象共有属性和行为
子类继承父类,使得子类及其对象可以直接具有父类属性和行为
子类可以直接访问父类中的非私有的属性和行为
继承描述的是事物之间的所属关系,这种is-a(是xx的一种)的关系
继承的好处
提高代码的复用性
使类与类之间产生了关系(多态的前提)
继承的格式
public class 子类 extends 父类{
}
构造方法
子类不能继承父类的构造器(因为构造器与类名一致)
子类初始化,必须先执行父类的初始化,初始化父类需要调用父类的构造方法(因为父类初始化了才能将内容继承给子类)
调用父类构造方法:super(参数)
实现方式:
默认:所有子类的构造方法第一行都会默认存在一个super()调用父类的空参构造方法
首行:子类的构造方法中调用父类的构造方法一定要放在第一行
手动代替默认:如果子类的构造方法中手动调用了父类的构造方法,那么子类的构造方法就不会在使用默认操作访问父类的构造方法
非私有成员
父类的非私有成员(成员变量,成员方法等),子类可以直接访问
私有成员
父类私有的成员(成员变量,成员方法等),子类不能直接访问,但是可以通过父类中的非私有方法间接访问
同名成员
如果子父类中出现相同的成员(成员变量,成员方法等),通过子类对象的引用,调用的是子类对象的引用,调用的是子类自己的成员
方法重写
概念
子类成员方法与父类(返回值类型,方法名和参数列表)一摸一样,称为方法重写
使用场景
子类继承父类,但觉得父类某方法不满足当前子类的需求,则重新定义与父类相同的方法,达到对该功能的增强实现
@Override
一种注解,用于方法重写的校验
作用:用于检查子类要重写的方法是否满足方法重写的规则(方法名是否相同,形参列表相同,是否继承,父类方法不是私有)
注意事项
方法重写是发生在子父类之间的关系
子类方法覆盖父类方法,必须要保证权限大于等于父类权限
返回值类型,方法名,参数列表完全相同
this作用
表示储存“当前对象”的引用
this指向的内容,可以理解为访问本类中的内容
三种格式
this.成员变量 访问本类成员变量
this.成员方法(...) 访问本类构造方法
this( ) 访问本类构造方法
注意事项
this调用本类构造方法,super调用父类构造方法只能同时存在一个,且必须在第一行
super作用
表示“父类”的引用
super指向的内容,可以理解为访问父类中的内容
三种格式
super.成员变量 访问父类成员变量
super.成员方法名(...) 访问父类成员方法
super(...) 访问父类构造方法
注意事项
父类中没有无参构造方法,子类可能报错
继承的特点
单继承:类与类只能单继承,不能多继承
多层继承:类与类之间可以多层继承
多个子类:同一个父类可以拥有多个子类