除了单继承的局限之外,实际上使用抽象类和接口都是类似的。在实际开发中,抽象类的设计比接口复杂。
- 开发之中优先考虑接口,以避免单继承局限。
- 抽象类是模板,有层次感。
- 接口则更关心行为与混合。
区别 | 抽象类 | 接口 |
---|---|---|
结构组成 | 普通类+抽象方法 ,就是在普通类的基础上扩充了一些抽象方法 | 抽象方法和全局常量 |
权限 | 都可以 ,类和方法都要加上abstract,证明是抽象类和抽象方法 | pubic |
子类使用 | 子类使用extends关键字继承抽象类 | 子类使用implements实现接口,抽象类的话可以选择实现接口的方法 |
关系 | 一个抽象类可以实现多个接口 | 接口不能继承抽象类,但是接口可以继承多个接口 |
子类限制 | 一个子类只能继承一个抽象类,非抽象子类实现所有的方法 | 一个子类可以实现多个接口 |