interface和abstract的区别
2019-06-27 本文已影响0人
LEO_青蛙
共同点
(1)两者都是抽象类,都不能实例化。
(2)interface实现类和abstract继承类都必须实现抽象方法。
不同点
(1)interface需要实现,用implements;abstract需要继承,用extends。
(2)一个类可以实现多个interface;一个类只能继承一个abstract。
(3)interface强调功能的实现;abstract强调从属关系。
(4)interface的所有抽象类都只有声明没有方法体;abstract抽象方法可以选择实现,也可以选择继续声明为抽象方法,无需实现,留给子类去实现。
| Interface | Abstract class | |
|---|---|---|
| 实例化 | 不能 | 不能 |
| 类 | 一个类可以实现多个interface | 一种继承关系,一个类只能使用一次继承关系。可以通过继承多个接口实现多重继承 |
| 数据成员 | 静态的不能被修改即必须是static final,一般不在此定义 | 可有自己的 |
| 方法 | 不可有私有的,默认是public,abstract 类型 | 可以私有的,非abstract方法,必须实现 |
| 变量 | 不可有私有的,默认是public static final 型,且必须给其初值,实现类中不能重新定义,不能改变其值。 | 可有私有的,默认是friendly 型,其值可以在子类中重新定义,也可以重新赋值 |
| 设计理念 | 表示的是“like-a”关系 | 表示的是“is-a”关系 |
| 实现 | 需要实现,要用implements | 需要继承,要用extends |