比如我要定義個廁所,廁所能提供一個receiveShit的功能,我還希望廁所能洗澡,廁所還要有燈。
就可以這麼解釋
廁所是個抽象類,有個抽象方法receiveShit,有自己的屬性燈泡(gets & sets...)然後有抽象方法 洗澡。
問題出現了,廁所是拉屎的,可以由子類實現站着拉還是蹲着拉。洗澡也分成站着洗和泡着洗,這時候問題出現了,洗澡和拉屎耦合到一起了。
所以我們把洗澡抽出來做成一個接口。
然後就看我們的需求了:
A:我們希望所有的廁所都能洗澡: 抽象類廁所繼承接口洗澡
B:廁所能不能洗澡得看具體是啥廁所:
1.子抽象類能洗澡的廁所繼承抽象類廁所繼承接口洗澡
2.子抽象類不能洗澡的廁所繼承抽象類廁所