继承与接口原则相关

    安娜·卡列尼娜,开场白:幸福的家庭都是相似的,不幸的家庭各有各的不幸。同样,好的代码长得都很像,差的代码千奇百怪。

    继承 - 解决对象源自什么

    例子1:人 继承 动物(人通过基因直接获得了动物默认的属性和行为,如生命属性,爬行运动行为)- 直接继承

    例子2:人 继承 动物(人通过进化改变了某些动物默认的属性和行为,如寿命更长,直立运动行为)- 继承复写

    接口 - 解决对象的定义(还可以是什么)与行为(还可以做什么)

    例子1.1:人 继承 鸟 ->鸟人 。因为想飞而不得不变成奇怪的鸟人吗? - 继承在这里不是合适的做法。

    例子1.2:人 实现 飞行员接口。即是人,但又有飞行员的身份(是什么)和飞行的能力(做什么)。

    例子2.1:人 继承 鸟,鱼 ->鸟,鱼人 。因为想飞和游水而不得不变成奇怪的鸟鱼人吗? - 多重继承在这里不是合适的做法。(并且Java不支持多重继承)

    例子2.1:人 实现 飞行员接口,潜水员接口。即是人,但又有飞行员的身份(是什么)和飞行的能力(做什么),同时又有潜水员的身份(是什么)和潜水的能力(做什么)。- 多重接口