比如我要定义个厕所,厕所能提供一个receiveShit的功能,我还希望厕所能洗澡,厕所还要有灯。
就可以这么解释
厕所是个抽象类,有个抽象方法receiveShit,有自己的属性灯泡(gets & sets...)然后有抽象方法 洗澡。
问题出现了,厕所是拉屎的,可以由子类实现站着拉还是蹲着拉。洗澡也分成站着洗和泡着洗,这时候问题出现了,洗澡和拉屎耦合到一起了。
所以我们把洗澡抽出来做成一个接口。
然后就看我们的需求了:
A:我们希望所有的厕所都能洗澡: 抽象类厕所继承接口洗澡
B:厕所能不能洗澡得看具体是啥厕所:
1.子抽象类能洗澡的厕所继承抽象类厕所继承接口洗澡
2.子抽象类不能洗澡的厕所继承抽象类厕所