1、接口中的方法默認都是 public,所有方法在接口中不能有默認實現(Java8 開始接口方法可以有默認實現),而抽象類可以有非抽象的普通方法;
2、接口中除了 static、final 變量,不能有其他變量,而抽象類中則不一定;
3、一個類可以實現多個接口,但只能繼承一個抽象類,接口本身可以通過 extends 關鍵字擴展多個接口;
4、接口方法的默認修飾符是 public,抽象方法中則可以有 public、protected 和 default 這些修飾符(抽象方法就是為了被重寫,所以不能使用private關鍵字修飾);
5、從設計層面來說,抽象類是對類的抽象,是一種模板設計,而接口是對行為的抽象,是一種行為的規范。