继承
继承的好处
- 提高了代码的复用性
- 提高了代码的维护性
- 让类与类之间产生了关系,是多态的前提
继承弊端
- 类的耦合性增强了
- 开发的原则:高内聚,低耦合
- 耦合:类与类的关系
- 内聚:就是自己完成某件事情的能力
继承特点
- Java只支持单继承
- Java支持多层继承(继承体系)
- 如果想用这个体系的所有功能用最底层的类创建对象
- 如果想看这个体系的共性功能,看最顶层的类
继承注意事项
- 子类只能继承父类所有非私有的成员(成员方法和成员变量)
- 子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法
- 不要为了部分功能而去继承
继承中成员变量的关系
- this:代表当前对象的引用,谁来调用我,我就代表谁
- super:代表当前对象父类的引用
- this和super的使用区别
- this.成员方法, 调用本类的成员方法, 也可以调用父类的方法
- super.成员方法 调用父类的成员方法
- this(...) 调用本类的构造方法
- super(...) 调用父类的构造方法
- this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
- super.成员变量, 调用父类的成员变量
- 调用成员变量
- 调用构造方法
- 调用成员方法
继承中构造方法的关系
- 子类中所有的构造方法默认都会访问父类中空参数的构造方法
- 子类的构造方法通过super(...)去显式调用父类的带参构造方法
- 子类的构造方法通过this()/this(...) 调用本类的其他构造方法,但是子类的其他构造方法中一定会有一个去访问了父类的带参构造方法
- 让父类提供无参构造
- 因为子类会继承父类中的数据,可能还会使用父类的数据
- 所以,子类初始化之前,一定要先完成父类数据的初始化.
- 其实每个构造方法的第一条语句默认都是super() Object类最顶层的父类
- 如果父类没有无参构造方法,子类怎么办?
继承中成员方法关系
- 什么是方法重写
- 子父类出现了一模一样的方法(注意:返回值类型可以是子父类)
- 方法重写的应用
- 当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类中的方法.这样,既沿袭了父类的功能,又定义了子类特有的内容.
- 注意事项
- 其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,静态只能覆盖静态
- 最好就一致
- 因为父类私有方法子类根本无法继承
- 父类中私有方法不能被重写
- 子类重写父类方法时,访问权限不能更低
- 父类静态方法,子类也必须通过静态方法进行重写
- 方法重写面试题
- Override和Overload的区别? Overload能改变返回值类型吗?
- override(重写):发生在java的继承中,当子类需要使用和父类方法名相同,但实现过程不同的方法时,就会用到重写。需要注意的是重写的方法的参数列表必须与弗雷的被重写的方法的参数列表完全一直,但返回值类型可以是父类被重写方法返回值类型的衍生类或者是相同类.
- overload(重载) : 重载发生在同一个类中,同一个类中需要用相同的方法名但实现过程不同的时候用到重载.重载是相同方法名但参数列表不同,即可实现重载.常用的例如类的构造方法的重载.
- overload能改变返回值类型,只看参数列表
本文参与
腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-29,如有侵权请联系
cloudcommunity@tencent.com 删除