介面和抽象類的異同

2021-09-14 00:55:17 字數 764 閱讀 9897

抽象類:如果乙個類中包含乙個抽象方法,它就是抽象類。

介面:就是指乙個方法的集合,介面中所有的方法都沒有方法體。

相同點:

都不能被例項化。

介面的實現類和抽象類的子類都只有實現了介面或抽象類中的方法後才能被例項化。

不同點:

1)介面中只有定義,其方法不能在介面中被實現,只有實現介面的類,才能實現介面中定義的方法,而抽象類可以有定義與實現,即其方法可以在抽象類中被實現。

2)介面需要實現(用implements),但抽象類只能被繼承(用extends)。乙個類可以實現多個介面,但是只能繼承乙個抽象類。

3)介面強調的是特定功能的實現,其設計理念是「has-a」關係;而抽象類強調所屬關係,其設計理念是「is-a」關係。

4)介面中定義的成員變數預設為public static final,只能夠有靜態的不能被修改的資料成員,而且,必須給其賦初值,其所有成員方法都是public、abstract的,而且只能被這兩個關鍵字修飾。而抽象類可以有自己資料成員變數和非抽象的成員方法,而且,抽象類中的成員變數預設是default,當然也可以被定義為private,public和protected,這些成員變數可以在子類中被重新定義,也可以被重新複製,抽象類中的抽象方法(其前有abstract修飾)不能用private、static、synchronized、native等訪問修飾符修飾,同時方法必須以分號結尾,並且不能帶花括號。

5)介面被運用於實現比較常用的功能,便於日後維護或者新增刪除方法;而抽象類更傾向於充當公共類角色,不適用於日後重新對裡面的**進行修改。

抽象類和介面異同

抽象類 定義 抽象類往往用來表徵對問題領域進行分析 設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。用 abstract 修飾的類是抽象類,抽象類是不完整的,它只能用作基類。在物件導向方法中,抽象類主要用來進行型別隱藏和充當全域性變數的角色。特徵 抽象類不能例項化。不能用...

抽象類和介面異同

本文總結了在 c 當中,介面與抽象類的一些異同,來與大家共享。1 抽象方法只作宣告,而不包含實現,可以看成是沒有實現體的虛方法 2 抽象類不能被例項化 3 抽象類可以但不是必須有抽象屬性和抽象方法,但是一旦有了抽象方法,就一定要把這個類宣告為抽象類 4 具體派生類必須覆蓋基類的抽象方法 5 抽象派生...

介面和抽象類的異同

相同點 抽象類和介面均包含抽象方法,類必須實現所有的抽象方法,否則是抽象類 抽象類和介面都不能例項化,他們位於繼承樹的頂端,用來被其他類繼承和實現 兩者的區別主要體現在兩方面 語法方面和設計理念方面 語法方面的區別是比較低層次的,非本質的,主要表現在 介面中只能定義全域性靜態常量,不能定義變數。抽象...