1 抽象类和接口的区别
- 相同:多态的实现可以借助抽象类和接口,抽象类和接口中都可以存在抽象方法,且继承抽象类和实现接口的子类必须重写父类的抽象方法。
- 核心区别: 抽象类中可以包含普通方法和普通字段,这样的方法和字段可以直接被子类继承使用,而接口中不能存在普通方法和字段,子类实现一个接口后必须重写接口中的所有抽象方法。
子类和抽象类的关系:
子类通过extends
关键字继承抽象类,且类间只存在单继承关系,所以一个子类只能继承一个抽象类
子类和接口的关系:
子类通过implements
关键字实现接口,接口对子类不存在限制,也就是说一个子类可以实现多个接口
抽象类和接口的关系:
一个抽象类可以通过implements
关键字实现诺干接口;
接口不能继承抽象类,但是接口与接口之间可以通过extends
关键字来扩展多个接口的功能
NO | 区别 | 抽象类(abstract) | 接口(interface) |
---|---|---|---|
1 | 访问权限 | 各种权限 | public |
2 | 结构 | 普通类 + (抽象方法) | 抽象方法 + 静态常量 |
3 | 与子类联系 | 子类使用extends 关键字继承抽象类 | 子类使用implements 关键字实现接口 |
4 | 两者关系 | 抽象类可以实现接口 | 接口不可以继承抽象类 |