接口
某一种类的说明,不包含具体的方法,所有方法都是抽象的,不能实例化,实现接口的类可以实例化,变量都为public static final.
接口好处:
- 实现抽象
- 运行支持动态调用
- 减少耦合
- 从继承分离方法的定义
抽象类
带有关键字abstract的类,知识一个抽象方法,可以有多种具体方法,不能被实例化。
抽象类好处
- 为子类提供默认功能方法
- 为支持提供模板
- 为子类提供公共接口
- 允许代码重用
区别:
| 接口 | 抽象类 |
|---|---|
| 实现多重 | 继承一个 |
| 抽象方法 | 抽象,具体 |
| 日后增加 | 避免依赖 |
| 添加比较复杂 | 默认实现比较好 |
| 只能public | 可以用不同的修饰符 |
| 多重实现,多态 | 相同类型共同行为 |
| 不能包含数据域 | 可以有数据域 |
| 不提供准则 | 可以提供默认的实现 |
| 接口可以继承多重接口,不能继承类 | 可以继承一个类和多个接口 |
| 没有构造器 | 有构造器 |
| 只能单继承接口 | 单继承类或者抽象类 |