Java 抽象类和接口的区别
抽象类和接口都用于实现抽象,可以声明抽象方法。 抽象类和接口都不能被实例化。但是在下面给出的抽象类和接口之间有许多区别。
接口:更多的事一种声明或者说是一种标准,现实生活中的USB和typeC及时两种不同的USB接口。Java中原理一样。
抽象类:更多的是对具体个体统一特征的描述,比如哺乳动物可以说就是抽象类,而猫狗具体的个体就是继承哺乳动物的具体类。
抽象类 | 接口 |
---|---|
抽象类可以有抽象和非抽象方法。 | 接口只能有抽象方法。 从Java 8开始,它也可以有默认和静态方法。 |
抽象类不支持多重继承。 | 接口支持多继承。 |
抽象类可以有final,非final,静态和非静态变量。 | 接口只有静态和final变量。 |
抽象类可以提供接口的实现。 | 接口不能提供抽象类的实现。 |
abstract关键字用来声明抽象类。 | interface关键字用于声明接口。 |
抽象类实现了部分抽象(0到100%),而接口实现了完全抽象(100%)。