抽象類和介面的區別與應用場景

2021-08-20 19:04:25 字數 1465 閱讀 9464

介面和抽象類有什麼區別

在應用場景下,選擇使用介面和抽象類的依據是什麼?

一、抽象類和介面在語法上的異同:

1、相同點

都不能被例項化

2、不同點     

第一點. 介面是抽象類的變體,介面比抽象類更加抽象,介面中所有的方法都是抽象的。
第二點. 每個類只能繼承乙個抽象類,但是可以實現多個介面

第三點.抽象類中不一定都是抽象方法,抽象的而抽象類可以實現部分方法。但是介面中方法必須為public修飾的、抽象的不能實現具體的法。

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

二、應用場景

應用都是基於規則的應用,也就是基於語法的應用,我們可以根據語法上的異同點來總結抽象類和介面的應用場景

相同點沒有什麼可說的,我們從不同點下手。

1、第乙個重要的不同點就是,

抽象類中不一定都是抽象的方法,也可以有具體實現的方法,這樣就可以把大家公用的方法提公升到抽象類中,然後具體的方法可以留給子類自己實現(此處經典的應用,模板方法設計模式)。所以抽象類可以更好的實現**的復用

2、另乙個重要的不同就是類可以實現多個介面。

介面和抽象類的概念不一樣。這個可以理解為介面是對動作的抽象,抽象類是對根源的抽象(即對本質的抽象與其他類的本質不同)。

抽象類表示的是,這個物件是什麼。介面表示的是,這個物件能做什麼。比如,男人,女人,這兩個類(如果是類的話……),他們的抽象類是人。說明,他們都是人。人可以吃東西,狗也可以吃東西,你可以把「吃東西」定義成乙個介面,然後讓這些類去實現它.

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

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

另乙個重要的概念就是多型,多型通過分離做什麼和怎麼做,從另乙個角度將介面和實現分離出來。多型不但能夠改善**的組織結果和可讀性,還能建立可擴充套件的程式----即無論在專案最初建立時還是在需要新增新功能時都可以「生長」的程式。由於介面更關注於動作的實現,多型主要是分離「做什麼」和「怎麼做」,所以介面的另乙個重要的應用就是多型的實現(當然抽象類也可以實現多型,但是介面更加合適)。

抽象類的功能要遠超過介面,但是,定義抽象類的代價高。因為高階語言來說(從實際設計上來說也是)每個類只能繼承乙個類。在這個類中,你必須繼承或編寫出其所有子類的所有共性。雖然介面在功能上會弱化許多,但是它只是針對乙個動作的描述。而且你可以在乙個類中同時實現多個介面。在設計階段會降低難度的。

抽象類與介面的應用場景

介面 inte ce 的應用場合 類與類之前需要特定的介面進行協調,而不在乎其如何實現。作為能夠實現特定功能的標識存在,也可以是什麼介面方法都沒有的純粹標識。需要將一組類視為單一的類,而呼叫者只通過介面來與這組類發生聯絡。需要實現特定的多項功能,而這些功能之間可能完全沒有任何聯絡。抽象類 abstr...

抽象類和介面的區別以及使用場景

兩者都是抽象類,都不能例項化。inte ce實現類及abstrct class的子類都必須要實現已經宣告的抽象方法。inte ce需要實現,要用implements,而abstract class需要繼承,要用extends。乙個類可以實現多個inte ce,但乙個類只能繼承乙個abstract c...

抽象類和介面的區別以及使用場景

兩者都是抽象類,都不能例項化。inte ce實現類及abstrct class的子類都必須要實現已經宣告的抽象方法。inte ce需要實現,要用implements,而abstract class需要繼承,要用extends。乙個類可以實現多個inte ce,但乙個類只能繼承乙個abstract c...