接口(Interface)& 抽象类(Abstract Class)& 具体类(Concrete Class)
接口:定义ADT
类:实现ADT
Concrete class --> Abstract Class --> Interface
接口:
- 接口之间可以继承与扩展
- 一个类可以实现多个接口(从而具备了多个接口中的方法)
- 一个接口可以有多种实现类
抽象类:
- 至少有一个抽象方法
- 抽象方法 Abstract Method
- 未被实现
- 如果某些操作是所有子类型都共有,但彼此有差别,可以在父类型中设计抽象方法,在各子类型中重写
具体类:
- 实现所有父类未实现的方法
继承(Inheritance) & 重写(Override)
- 类 & 类:继承
- 类 & 接口:实现、扩展
覆盖/重写Override
:
- 重写的函数:完全同样的signature
- 实际执行时调用哪个方法,运行时决定
- 重写的时候,不要改变原方法的本意
- 运行阶段进行动态检查
- 父类型中的被重写函数体
- 不为空:
- 该方法是可以被直接复用的
- 对某些子类型来说,有特殊性,可重写父类型中的函数,实现自己的特殊要求
- 为空:
- 其所有子类型都需要这个功能
- 但各有差异,没有共性,在每个子类中均需要重写
- 不为空:
super
- 重写之后,利用
super()
复用了父类型中函数的功能,还可以对其进行扩展 - 如果是在构造方法中调用父类的构造方法,则必须在构造方法的第一行调用
super()