1、抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

2、抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

3、一个类只能继承一个抽象类,而一个类却可以实现多个接口。

4、一般情况下接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。从这里可以隐约看出接口和抽象类的区别,接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量。

5、另外JDK8允许接口中有 默认方法 、静态方法 。JDK9允许接口中有 私有方法 。