在接口和抽象类的选择上必须遵循这样一个原则:
行为模型应该总是通过接口来定义;
如何用抽象类来定义,可能会出现这样的问题:不仅定义了特性的行为,而且隐含的定义了实现的模式;
抽象类能够保证实现的层次关系。避免代码重复;
如果依赖抽象类来定义行为,往往导致过于复杂的继承关系,而接口可以有效的分离行为和实现,为代码的维护带来方便。
1. 如果要创建不带任何方法定义和成员变量的基类,那么选接口;
2. 接口使用的最根本之处:为了能够向上转型为多个基类型而带来的极大的灵活性
接口的特性:
1. 接口中的方法可以有参数列表和返回类型,但不能有任何方法体。
2. 接口中可以包含字段,但是会被隐式的声明为static 和 final。
3. 接口中的方法可以声明为public或者不声明,但会默认还是public。
4. 当实现一个接口时, 需要将被定义的方法声明为public。
5. 如果没有实现接口中的所有方法,那么创建的仍是一个接口。
6. 接口可以被新的接口继承 extends。
所以呢???
当我们确定某个事物应该成为一个基类的时候,接口是第一选。