以下均以java语言做参考来说。
1. 接口具有哪些特性?
- 接口不能包含属性。
- 接口只能声明方法,方法不能包含代码实现。
- 类实现接口的时候,必须实现接口中声明的所有方法。
2. 为什么需要接口?
解耦,能够极大地提高代码的灵活性和扩展性。
3. 抽象类具有哪些特性?
- 不允许被实例化,只能被继承。
- 可以包含属性和方法。方法既可以包含代码实现,也可以不包含代码实现。不包含代码实现的方法叫作抽象方法。
- 非抽象子类继承抽象类,必须实现抽象类中的所有抽象方法。
4. 为什么需要抽象类?
提高代码可复用性,使用抽象类的场景下如果用类继承实现会出现以下弊端:
- 子类的方法必须要在基类创建创建空方法,会使设计看上去不够优雅。
- 子类忘记实现必须要重写的方法时,编译器不会报错提示。
- 基类可以被实例化误用。
5. 如何决定该用抽象类还是接口?
取决于是要表达is-a关系(抽象类),还是has-a关系(接口)。
网友评论