Inheritance[JAVA]
1.什么是继承性
1.1继承体现
- 继承(extends)让类与类之间产生关系,子父类关系
- Animal是父类,cat和dog都是子类
- 书写格式 class cat extends Animal{}
1.2代码体现
1 |
|
1.3继承核心
- Java只支持单继承,不支持多继承
- Java支持多层继承(继承体系)
- 子类继承父类就获得了父类所有的属性与方法
- 父类的私有结构,子类依然可以继承,只是因为封装性的影响,不能直接调用父类的结构而已
- 如果要看这个体系的所有功能用最底层的类创建对象
- 如果想看这个体系的共性功能,看最顶层的类
1.3继承利弊
好处
提高了代码的复用性以及维护性,并且让类于类之间产生了关系(多态的前提)
弊端
开发追求高内聚 低耦合,所以类的耦合性增强了
耦合: 类于类的关系 内聚: 就是自己完成某件事情的能力
2.Object类
一个类若没有声明它的父类,它默认的父类是object类
所有的java类的默认父类都是object类或间接继承object类
所有的java类都具有object类中的功能
3.方法重写
3.1核心意义
子父类出现相同的方法(注意:返回值类型可以是子父类)
应用:当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法.
3.2注意事项
方法本身
- 父类中private方法不能被重写
- 方法的形参列表要一致
- 子类重写父类方法时,访问权限比父类高/一致
返回值类型
- 父类方法为void或基本数据类型,子重写方法一样
- 父类方法为引用数据类型时候,子重写方法一样/这个引用数据类型的子类
后续
- 子类重写的方法抛出的异常类型,不能大于父类被重写的异常类型
- 子父类的同名同参数方法,要么声明static的(不是重写),要么声明非static的(考虑重写
4.super关键词
4.1理解
super可以理解为:父类的
super可以调用:属性、方法、构造器
4.2调用属性方法
在子类的属性或方法中,通常使用super.属性/方法,来显示父类中声明的属性/方法(通常省略不写)
子类和父类定义同名属性时,需使用super.属性做区分
子类重写父类中的方法后,如果还想用父类被重写的方法,通过super.方法名调用重写前的方法
4.3调用构造器
- 子类构造器通过super(形参列表)的方式,调用父类声明的指定构造器
- 构造器的第一句必须是super(形参列表 )
- this(形参列表)或super(形参列表),在构造器中只能二选一
- 构造器的首行没有写的话,默认是父类的空参构造器:super()
- 类多多个构造器中,至少有一个构造器使用了”super(形参列表)”,去调用父类的构造器
5.子类对象实例化
从结果上来看:(继承性)
子类继承了父类之后,就获得了父类中的属性和方法
创建子类的对象,在堆空间中,就会加载父类中声明的属性
从过程上来看
当我们通过子类的构造器去创建对象地时候,我们一定会直接或简介地去调用父类地构造器,进而调用父类地父类地构造器。。。,直到object类空参构造器为止。
正因为加载了父类地所有结构,所以才可以在内存中有父类地结构,子类对象才能去调用
Inheritance[JAVA]
http://example.com/2022/04/05/Java初级部分/OOP/Inheritance/