抽象類和接口區別(1.8版本後)
|
接口 |
抽象類 |
實現方式 |
多重實現 |
只能單繼承 |
構造方法 |
無 |
可以有構造方法 |
方法 |
原來只能有抽象方法,1.8後可以有靜態方法和 default方法(用default關鍵字修飾的方法),也就是接口中可以有實現方法 |
可以有默認方法的實現。可以有main方法 |
屬性 |
public static final |
各種修飾符均可
|
public class Main {
public static void main(String[] args) {
JDK8Interface.staticMethod(); // static方法必須通過接口類調用
new JDK8InterfaceImpl().defaultMethod(); //default方法必須通過實現類的對象調用
}
}
public class JDK8InterfaceImpl implements JDK8Interface {
//實現接口後,因爲默認方法不是抽象方法,所以可以不重寫,但是如果開發需要,也可以重寫
}
public interface jiekou {
public default int fun() {
System.out.print("我是默認方法,子類可以不重寫");
}
public static int fun2() {
System.out.print("我是靜態方法,子類可以不重寫");
}
public abstract int fun3();//抽象的方法,子類要有具體實現,不能有方法體
}