JAVA抽象类和接口类的区别
- 1、声明方式不同。抽象类为
abstract class
,接口类为interface
。 - 2、继承抽象类关键字为
extends
,实现接口关键字为implements
。 - 3、继承抽象类仅支持
单继承
,实现接口可以多实现
。
- 单继承:
classB Extends classA
- 接口多实现:
Interface implements Interface0, Interface1, interface2……
- java中为什么要
单继承
,多实现?
- 若为多继承,那么当多个父类中有重复的属性或者方法时,子类的调用结果会含糊不清,因此用了单继承。
- 为什么可以
多实现
呢?
- 通过实现接口拓展了类的功能,若实现的多个接口中有重复的方法也没关系,因为实现类中必须重写接口中的方法,所以调用时还是调用的实现类中重写的方法。那么各个接口中重复的变量又是怎么回事呢?
以下区别均可引用
区别3
的原因讲解去理解为什么。
区别3
的原因讲解去理解为什么。
- 4、抽象类可以有构造方法,接口中不能有构造方法。
- 5、抽象类可以有
成员变量
,接口类只能有常量(static
)。 - 6、抽象类可以有
成员方法
,接口中只可以有抽象方法
。 - 7、抽象类中增加方法可以
影响子类
,接口中增加方法通常
影响子类(JDK1.8增加default方法不影响子类) - 8、从JDK1.8开始允许接口中出现非抽象方法,但需要default关键字修饰。
- 主要减少了代码牵一发而动全身`的弊端.