什么时候用接口?什么时候用抽象类?
接口相对于抽象类和实体类的好处.
实现多继承.
对于一种需求,发电机,然后分别有光能和风能发电机,最后又出来风能光能混合发电机.
如果使用抽象类,则因为JAVA不支持多继承而使,(风能光能混合发电机 instance 风能发电机)失效.而如果使用接口则没有此问题.
抽象类相对于接口的好处
抽象类中可以包含一些实现,即一些非abstract方法,而接口中所有的方法都是抽象的.所以抽象类可以将子类中共同的逻辑向上提,在抽象类中实现,在一定程度上实现代码的复用.
抽象类和接口相对于实体类的好处.
通过方法的覆盖来实现多态,也就是运行期绑定.
总结
接口是用来定义行为的,抽象类是用来实现行为的,实体类是用来执行行为的.
| 多重继承 | 支持抽象函数 | 支持具体实现 | 允许创建实体 |
Interface | Y | Y | N | N |
Abstract class | N | Y | Y | N |
class | N | N | Y | Y |