众所周知,在JAVA中,抽象类和接口都用于实现抽象,我们可以在其中声明抽象方法。抽象类和接口都不能被实例化。但是抽象类和接口之间还是有很多区别的。
1、抽象类可以有抽象方法和非抽象方法,接口只能有抽象方法,但是从JAVA8之后,它也可以有默认方法和静态方法。
2、抽象类不支持多重继承,接口支持多重继承。
3、抽象类可以有最终的、非最终的、静态的和非静态的变量,接口只有static和final变量
4、抽象类可以提供接口的实现,接口不能提供抽象类的实现
5、abstract关键字用于声明抽象类、interface关键字用于声明接口
6、一个抽象类可以扩展另一个JAVA类,并实现多个JAVA接口,一个接口只能扩展另一个JAVA接口
7、抽象类一般用关键字extends扩展,接口用implement来实现接口
8、JAVA抽象类可以有类成员,如private,protect等,默认情况下,JAVA接口的成员是公共的
简单的说就是 抽象类实现了部分抽象类(0到100%),而接口实现了完全抽象(100%)