介面和抽象類的區別和聯絡

2021-07-08 21:41:27 字數 2071 閱讀 7176

具體:

介面和抽象類有什麼區別

你選擇使用介面和抽象類的依據是什麼?

介面和抽象類的概念不一樣。介面是對動作的抽象,抽象類是對根源的抽象。

抽象類表示的是,這個物件是什麼。介面表示的是,這個物件能做什麼。比如,男人,女人,這兩個類(如果是類的話……),他們的抽象類是人。說明,他們都是人。

人可以吃東西,狗也可以吃東西,你可以把「吃東西」定義成乙個介面,然後讓這些類去實現它.

所以,在高階語言上,乙個類只能繼承乙個類(抽象類)(正如人不可能同時是生物和非生物),但是可以實現多個介面(吃飯介面、走路介面)。

第一點. 介面是抽象類的變體,介面中所有的方法都是抽象的。而抽象類是宣告方法的存在而不去實現它的類。

第二點. 介面可以多繼承,抽象類不行

第三點. 介面定義方法,不能實現,而抽象類可以實現部分方法。

第四點. 介面中基本資料型別為static 而抽類象不是的。

當你關注乙個事物的本質的時候,用抽象類;當你關注乙個操作的時候,用介面。

抽象類的功能要遠超過介面,但是,定義抽象類的代價高。因為高階語言來說(從實際設計上來說也是)每個類只能繼承乙個類。在這個類中,你必須繼承或編寫出其所有子類的

所有共性。雖然介面在功能上會弱化許多,但是它只是針對乙個動作的描述。而且你可以在乙個類中同時實現多個介面。在設計階段會降低難度的。

***********************************==

含有abstract修飾符的class 即為抽象類,abstract類不能建立例項物件,含有abstract的方法的類必須定義為abstract class ,abstract class 裡的方法不必是抽象的,抽象來中定義抽象方法必須放在具體子類中實現,所以呀,不能有抽象的構造方法或抽象的靜態方法,如果子類沒有實現抽象父類中的所有 方法,那麼,子類也必須定義為抽象類。

介面(inte***ce)可以說成是抽象類的特例。介面中的所有方法都必須是抽象的,介面中的方法定義預設為public abstract 。介面中的變數是全域性常量,即public static final修飾的。

看一下他們在語法上的區別吧!

1,抽象類裡可以有構造方法,而介面內不能有構造方法。

2,抽象類中可以有普通成員變數,而介面中不能有普通成員變數。

3,抽象類中可以包含非抽象的普通方法,而介面中所有的方法必須是抽象的,不能有非抽象的普通方法。

4,抽象類中的抽象方法的訪問型別可以是public ,protected和預設型別,但介面中的抽象方法只能是public型別的,並且預設即為public abstract型別。

5,抽象類中可以包含靜態方法,介面內不能包含靜態方法。

6,抽象類和介面中都可以包含靜態成員變數,抽象類中的靜態成員變數的訪問型別可以任意,但介面中定義的變數只能是public static型別,並且預設為public static型別。

7,乙個類可以實現多個介面,但只能繼承乙個抽象類。

再補充點兩者在應用上的區別:

介面更多的是在系統框架設計方法發揮作用,主要定義模組之間的通訊,而抽象類在**實現方面發揮作用,可以實現**的重用

序號區別點

抽象類介面1定義

包含乙個抽象方法的類

抽象方法和全域性常量的集合2組成

構造方法、抽象方法、普通方法、常量、變數

抽象方法、常量3使用

子類繼承抽象類extends

子類實現介面implements4關係

抽象類可以實現多個介面

介面不能繼承抽象類,但允許繼承多個介面

5常見設計模式

模板設計

工程設計、**設計6物件

都通過多想的多型性產生例項化的物件同左7

侷限抽象類有單繼承的侷限,而介面沒有這個侷限同左8

實際作為乙個模板

作為乙個標準或者表示一種能力9選擇

如果抽象類和介面都可以使用的時候,優先使用介面,避免單繼承的侷限

同左10

特殊個人抽象類中可以包含多個介面,乙個介面中可以包含多個抽象類同左

大原則:乙個類千萬不要去繼承乙個已經實現好的類,只能繼承抽象類或實現介面,如果抽象類和介面都可以使用的時候,優先使用介面,避免單繼承的侷限。

介面和抽象類的區別和聯絡

介面和抽象類的區別和聯絡 1 介面和抽象類都不能產生物件。介面變數只能指向實現類物件,抽象類變數只能指向子類物件。2 乙個類實現介面或者乙個類繼承乙個抽象類,都必須實現介面或抽象類中定義的所有抽象方法。否則該類只能是抽象類。3 抽象類中可以定義抽象方法也可以定義具體方法。但介面中只能定義抽象方法。4...

介面和抽象類的區別和聯絡

1 介面不能被例項化 2 介面只能包含方法宣告 3 介面的成員包括方法 屬性 索引器 事件 4 介面中不能包含常量 字段 域 建構函式 析構函式 靜態成員 5 介面中的所有成員預設為public,因此介面中不能有private修飾符 6 派生類必須實現介面的所有成員 7 乙個類可以直接實現多個介面,...

介面和抽象類區別和聯絡 面試必備

抽象類 概念 抽象類不能建立例項,它只能作為父類被繼承。抽象類是從多個具體類中抽象出來的父類,它具有更高層次的抽象。從多個具有相同特徵的類中抽象出乙個抽象類,以這個抽象類作為其子類的模板,從而避免了子類的隨意性。特點 抽象類無法被例項化 因為它不是具體的類,但是有構造方法 抽象類有構造方法,是給子類...