介面 抽象類區別

2021-08-22 09:51:03 字數 680 閱讀 8651

(一)設計層面

1、抽象類是對一種事務的抽象,即就是對類的抽象,包括屬性、行為,介面是對類的區域性(行為)進行抽象

簡單的例子:飛機和鳥是不同的事物,但他們有乙個共同點就是會飛行,那麼在設計的時候,可以將飛機和鳥設計為抽象類,將他們共同的行為就是飛行抽象為乙個介面,介面中有飛行的方法,使飛機和鳥分別去實現這個介面。然後至於有不同種類的飛機,比如戰鬥機,民用機就可以直接繼承飛機抽象類

2、抽象類作為很多子類的父類,它是基於模板方法設計模式(定義乙個操作中乙個演算法的框架,將一些步驟延遲到子類中去,使得子類不可以改變演算法的演算法的結構就可以重定義該演算法中的某些特定步驟),分離可變的和不可變的,將可變的部分提取出來,放在超類中,讓子類去共享其行為,將可變的部分的具體實現延遲到子類中,讓子類自行決定如何實現

介面是一種行為規範,基於輻射式的設計。即就是對於抽象類,如果要進行變更,需要新增新的方法直接在抽象類中新增具體的實現;但是介面不行,介面如果進行變更,則所有實現了介面的類都必須進行相應的變更。

(二)語法方面

1、乙個類只可以繼承乙個抽象類,但是乙個類可以實現多個介面

2、抽象類中可以有靜態方法,靜態**塊,而介面中不能有

3、抽象類中可以存在方法的實現細節,但是介面中的方法預設public abstract

4、抽象類中的成員變數可以是多種型別的,而介面中的變數只能是public static final型別

抽象方法 抽象類 介面 介面和抽象類的區別

某個父類只知道子類因該包含什麼樣的方法,無法知道這些子類如何實現這些方法。抽象類包含該方法但沒有對該方法的具體實現。有抽象方法的類只能被定義為抽象類,抽象類裡可以沒有抽象方法。抽象方法和抽象類的規則 public abstract class shape private string color p...

簡述抽象類和介面 抽象類區別的區別

用abstract修飾的類叫抽象類 1 抽象類不能有物件,抽象類不能例項化,不能new 2 abstract修飾的方法為抽象方法,這種方法不能有方法體 什麼內容都沒有 3 抽象類不能有物件,不能new物件 4 有抽象方法的一定是抽象類,抽象類中不一定有抽象方法 5 抽象型別中的抽象方法必須在子類中被...

介面和抽象類區別

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