不同继承树的类也可以实现相同的接口
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
当你把一个类当作多态类型运用时,相同的类型必定来自同一个继承树,而且必须是该多态类型的子类。定义为Canine
类型的参数可以接受Wolf
与Dog
,但无法忍受Cat
或Hippo
。
更棒的是类可以实现多个接口!
通过继承结构,Dog对象IS-A Canine
、IS-A Animal
、IS-A Object
的关系是成立的。但Dog IS-A Pet
是通过接口实现的机制达成的,并同时也能够实现其他的接口:
public class Dog extends Animal implements Pet{…}
要如何判断应该是设计类、子类、抽象类或接口呢?
- 如果新的类无法对其他的类通过IS-A测试时,就设计不继承其他类的类。
- 只有在需要是类的特殊化版本时,以覆盖或增加新的方法类继承现有的类。
- 当你需要定义一群子类的模板,又不想让程序员初始化此模板时,设计出抽象的类给它们用。
- 如果想要定义出类可以扮演的角色,使用接口。
调用父类的方法
如果创建出一个具体的子类且必须要覆盖某个方法,但又需要执行父类的方法时要怎么办?也就是说不打算完全地覆盖掉原来的方法,只是要加入额外的动作要怎么做?super这个关键句能让你在子类中调用父类的方法。
super.runReport(); //super关键字是用来引用父类对象的
在线练习
{$ activeFileHint $}