介面和抽象類的區別

2021-07-22 04:42:16 字數 800 閱讀 8778

區別:一.語法層次上:如上所述。

二.設計層次上:

1、 抽象層次不同。抽象類是對類抽象,而介面是對行為的抽象。抽象類是對整個類整體進行抽象,包括屬性、行為,但是介面卻是對類區域性(行為)進行抽象。

2、 跨域不同。抽象類所跨域的是具有相似特點的類,而介面卻可以跨域不同的類。我們知道抽象類是從子類中發現公共部分,然後泛化成抽象類,子類繼承該父類即可,但是介面不同。實現它的子類可以不存在任何關係,共同之處。例如貓、狗可以抽象成乙個動物類抽象類,具備叫的方法。鳥、飛機可以實現飛fly介面,具備飛的行為,這裡我們總不能將鳥、飛機共用乙個父類吧!所以說抽象類所體現的是一種繼承關係,要想使得繼承關係合理,父類和派生類之間必須存在"is-a" 關係,即父類和派生類在概念本質上應該是相同的。對於介面則不然,並不要求介面的實現者和介面定義在概念本質上是一致的, 僅僅是實現了介面定義的契約而已,相當於是"like-a"的關係。

3、 設計層次不同。對於抽象類而言,它是自下而上來設計的,我們要先知道子類才能抽象出父類,而介面則不同,它根本就不需要知道子類的存在,只需要定義乙個規則即可,至於什麼子類、什麼時候怎麼實現它一概不知。比如我們只有乙個貓類在這裡,如果你這是就抽象成乙個動物類,是不是設計有點兒過度?我們起碼要有兩個動物類,貓、狗在這裡,我們在抽象他們的共同點形成動物抽象類吧!所以說抽象類往往都是通過重構而來的!但是介面就不同,比如說飛,我們根本就不知道會有什麼東西來實現這個飛介面,怎麼實現也不得而知,我們要做的就是事前定義好飛的行為介面。所以說抽象類是自底向上抽象而來的,介面是自頂向下設計出來的。

附加,空介面的作用:

通常是作為乙個標記,你比如這個serializable、cloneable

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

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

介面和抽象類區別

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

介面和抽象類區別

抽象類 特點 1.抽象類中可以構造方法 2.抽象類中可以存在普通屬性,方法,靜態屬性和方法。3.抽象類中可以存在抽象方法。4.如果乙個類中有乙個抽象方法,那麼當前類一定是抽象類 抽象類中不一定有抽象方法。5.抽象類中的抽象方法,需要有子類實現,如果子類不實現,則子類也需要定義為抽象的。介面 1.在介...