抽象類和介面有什麼異同
阿新 • • 發佈:2019-01-10
介面和抽象類的相同點:
1.都不能被例項化
2.介面的實現類或者抽象類的子類都只有實現了介面或者抽象類中的方法後才能被例項化。
介面和抽象類的不同點:
1.介面只有定義,其方法不能在介面中實現,只有實現介面的類才能實現介面中定義的方法,而抽象類可以有定義與實現,即其方法可以在抽象類中被實現。
2.介面需要實現(implements),但是抽象類需要繼承(extends)。一個類可以實現多個介面,但一個類只能繼承一個抽象類,因此使用介面可以間接的達到多重繼承的目的
3.介面強調特定功能的實現,其設計理念是“”has a“”關係,抽象類強調所屬關係,is a 關係。
4.介面中定義的成員變數預設是public static final,只能夠有靜態的不能被修改的資料成員,而且,必須賦初值,所有的方法都是public abstract的,,而且只能被這兩個關鍵字修飾,抽象類可以有自己的資料成員變數,也可以有非抽象的成員方法,抽象類中的成員變數預設都是default,當然也可以被定義為private、protected和public。這些成員變數可以在子類中被重新定義,也可以重新賦值。抽象類中的抽象方法不能用private、static、synchronized、native等訪問修飾符修飾,同時方法必須以分號結尾,並且不帶花括號。當功能需要累積時,用抽象類,不需要累積時,用介面。
5.介面被運用於實際比較常用的功能,便於日後維護或者新增刪除方法;而抽嫌累更傾向於沖淡公共類的角色,不適用於日後重新對裡面的程式碼進行修改。