介面和抽象類的異同

2021-08-04 09:46:17 字數 707 閱讀 1391

相同點

ø  抽象類和介面均包含抽象方法,類必須實現所有的抽象方法,否則是抽象類

ø  抽象類和介面都不能例項化,他們位於繼承樹的頂端,用來被其他類繼承和實現

兩者的區別主要體現在兩方面:語法方面和設計理念方面

語法方面的區別是比較低層次的,非本質的,主要表現在:

ø  介面中只能定義全域性靜態常量,不能定義變數。抽象類中可以定義常量和變數。

ø  介面中所有的方法都是全域性抽象方法。抽象類中可以有0個、1個或多個,甚至全部都是抽象方法。

ø  抽象類中可以有構造方法,但不能用來例項化,而在子類例項化是執行,完成屬於抽象類的初始化操作。介面中不能定義構造方法。

ø  乙個類只能有乙個直接父類(可以是抽象類),但可以充實實現多個介面。乙個類使用extends來繼承抽象類,使用implements來實現介面。

二者的主要區別還是在設計理念上,其決定了某些情況下到底使用抽象類還是介面。

ø  抽象類體現了一種繼承關係,目的是復用**,抽象類中定義了各個子類的相同**,可以認為父類是乙個實現了部分功能的「中間產品」,而子類是「最終產品」。父類和子類之間必須存在「is-a」的關係,即父類和子類在概念本質上應該是相同的。

ø  介面並不要求實現類和介面在概念本質上一致的,僅僅是實現了介面定義的約定或者能力而已。介面定義了「做什麼」,而實現類負責完成「怎麼做」,體現了功能(規範)和實現分離的原則。介面和實現之間可以認為是一種「has-a的關係」

抽象類和介面異同

抽象類 定義 抽象類往往用來表徵對問題領域進行分析 設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。用 abstract 修飾的類是抽象類,抽象類是不完整的,它只能用作基類。在物件導向方法中,抽象類主要用來進行型別隱藏和充當全域性變數的角色。特徵 抽象類不能例項化。不能用...

抽象類和介面異同

本文總結了在 c 當中,介面與抽象類的一些異同,來與大家共享。1 抽象方法只作宣告,而不包含實現,可以看成是沒有實現體的虛方法 2 抽象類不能被例項化 3 抽象類可以但不是必須有抽象屬性和抽象方法,但是一旦有了抽象方法,就一定要把這個類宣告為抽象類 4 具體派生類必須覆蓋基類的抽象方法 5 抽象派生...

介面和抽象類的異同

抽象類 如果乙個類中包含乙個抽象方法,它就是抽象類。介面 就是指乙個方法的集合,介面中所有的方法都沒有方法體。相同點 都不能被例項化。介面的實現類和抽象類的子類都只有實現了介面或抽象類中的方法後才能被例項化。不同點 1 介面中只有定義,其方法不能在介面中被實現,只有實現介面的類,才能實現介面中定義的...