介面和抽象類有什麼區別

2021-08-18 19:44:45 字數 1465 閱讀 9129

介面和抽象類有什麼區別

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

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

1、相同點

都不能被例項化

2、不同點     

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

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

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

二、應用場景

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

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

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

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

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

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

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

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

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

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

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

介面和抽象類有什麼區別

介面和抽象類有什麼區別 你選擇使用介面和抽象類的依據是什麼?介面和抽象類的概念不一樣。介面是對動作的抽象,抽象類是對根源的抽象。抽象類表示的是,這個物件是什麼。介面表示的是,這個物件能做什麼。比如,男人,女人,這兩個類 如果是類的話 他們的抽象類是人。說明,他們都是人。人可以吃東西,狗也可以吃東西,...

介面和抽象類有什麼區別

介面和抽象類有什麼區別 你選擇使用介面和抽象類的依據是什麼?介面和抽象類的概念不一樣。介面是對動作的抽象,抽象類是對根源的抽象。抽象類表示的是,這個物件是什麼。介面表示的是,這個物件能做什麼。比如,男人,女人,這兩個類 如果是類的話 他們的抽象類是人。說明,他們都是人。人可以吃東西,狗也可以吃東西,...

介面和抽象類有什麼區別

你選擇使用介面和抽象類的依據是什麼?介面和抽象類的概念不一樣。介面是對動作的抽象,抽象類是對根源的抽象。抽象類表示的是,這個物件是什麼。介面表示的是,這個物件能做什麼。比如,男人,女人,這兩個類 如果是類的話 他們的抽象類是人。說明,他們都是人。人可以吃東西,狗也可以吃東西,你可以把 吃東西 定義成...