C# 程式中抽象類和介面的區別


眾所周知,C# 是一種面向物件的程式語言,就像 Java 一樣,並完全支援面向物件的特性,例如封裝、抽象、繼承和多型。與抽象相反,抽象類和介面都出現在畫面中,因為它們都提供了 C# 程式中的抽象。

在抽象類中,我們可以建立需要由派生類實現的功能。介面允許我們定義功能或函式,但不能實現它們。派生類擴充套件介面並實現這些函式。

以下是抽象類和介面之間的一些重要區別。

序號關鍵抽象類介面
1定義根據標準定義,抽象類在概念上是一個不能被例項化的類,通常實現為具有一個或多個純虛(抽象)函式的類。另一方面,介面是對繼承此介面的類必須實現的成員函式的描述。換句話說,介面描述了類的行為。
2實現與 C# 中的其他通用類設計一樣,抽象類在其宣告中也具有自己的實現。另一方面,介面只能具有簽名,而不能具有實現。而它的實現是由實現它的類提供的。
3繼承根據 C# 中的規範,一個類只能擴充套件另一個類,因此抽象類無法實現多重繼承。另一方面,在介面的情況下,一個類可以實現多個介面,因此介面可以實現多重繼承。
4建構函式與 C# 中的其他類一樣,抽象類也有建構函式,它提供抽象類的例項來訪問其非靜態方法。另一方面,介面沒有建構函式,因此我們不能直接例項化介面,儘管可以透過建立實現它的類的例項來訪問其方法。
5修飾符由於抽象類在 C# 中最類似於其他普通類,因此它可以包含不同型別的訪問修飾符,例如 public、private、protected 等。另一方面,由於介面需要被實現才能由其他類提供其方法的實現,因此只能包含 public 訪問修飾符。
6效能由於抽象類有其方法及其實現,以及對其抽象方法實現的實現類引用,因此與介面相比,效能相對更快。另一方面,介面的效能較慢,因為它需要時間在相應的類中搜索實際方法。

更新時間: 2020-02-24

3K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告