1.接口与抽象类
资料:https://www.jianshu.com/p/7efced731cab
定义类的过程就是抽象与封装的过程。而接口与抽象类则是对实体类更高一层次的抽象,仅仅是定义公共行为和特征规范。
抽象类被继承时候,体现的是 is-a的关系。抽象类可以定义普通方法,继承抽象类的时候,可以共用该方法。接口是can-do关系
(模板式设计)
abstract class的核心在于,我知道一类物体的部分行为(和属性),但是不清楚另一部分的行为(和属性),所以我不能自己实例化。还是刚才那个例子,如果你有个abstract class叫哺乳动物,那么你可以定义他们胎生,恒定体温等共同的行为,但是具体“叫”这个行为时,你得留着让非abstract的狗和猫等等子类具体实现。
(契约式设计)
interface的核心在于,我只知道这个物体能干什么,具体是什么不需要遵从类的继承关系。比如上述的“玩耍”interface,狗有狗的玩法,猫有猫的玩法,妖魔鬼怪机器人都可以玩耍,只要你告诉我这个物体有玩耍接口,我就能让它玩起来(๑•̀ㅂ•́) ✧
2.Java的单继承
Java中利用单继承的形式,避免继承泛滥,循环继承等情况
可以这么考虑,如果有两个父类,两个父类里有一个相同的方法,那么作为子类应该怎么继承这个方法?父类1的还是父类2的?
(只能有一个父亲。不能是人又是狗)