C 介面和類的區別

2021-07-11 08:45:00 字數 2613 閱讀 5901

c#介面和抽象類的相同:

1.都不能對方法或屬性的具體的實現;

2.都可以被繼承;

3.都不可以被例項化。

c#介面和抽象類的區別:

1.介面是一種型別,不能包含靜態的成員,不能包括變數的定義,定義的方法或屬性預設為public的,不能加public修飾,繼承介面的類在實現介面的成員時必須為public的。

2.抽象類本身是類的修飾符,不是一種型別,可以有靜態的成員,變數的定義,非抽象的方法(但必須實現),可以有virtual方法,抽象類的子類必須全部實現父類中的抽象的

成員,且應與父抽象類的抽象成員的修飾一致(即public或protected).

c#介面和抽象類絕對經典示例

.net framework是學習的最好資源,有意識的研究fcl是每個.net程式設計師的必修課,關於介面和抽象類在fcl中的使用,我有以下的建議:

c#介面和抽象類animal示例

下面的例項,因為是我的理解,因此給經典打上「相對」的記號,至於什麼時候晉公升為「絕對」,就看我在.net追求的路上,是否能夠一如既往的如此執著,因此我將把相對重構到絕對為止(呵呵)。 本示例沒有闡述抽象類和介面在設計模式中的應用,因為那將是另一篇有討論價值的文字,本文著眼與概念和原則的把握,但是真正的應用來自於具體的需求規範。

設計結構如圖所示:

1. 定義抽象類

publicabstractclassanimal   

//宣告抽象方法

publicabstractvoidshow();

//實現一般方法

publicvoidmakevoice()

}

2. 定義介面

publicinte***ceiaction   

3. 實現抽象類和介面

publicclassduck : animal, iaction   

//過載抽象方法

publicoverridevoidshow()

//過載抽象屬性

publicoverridestringname

}

//實現介面方法

publicvoidmove()

}

publicclassdog : animal, iaction

publicoverridevoidshow()

publicoverridestringname

}

publicvoidmove()

}

4. 客戶端實現

publicclasstestanmial   

}

dunai認為:抽象類是提取具體類的公因式,而介面是為了將一些不相關的類「雜湊」成乙個共同的群體。至於他們在各個語言中的句法,語言細節並不是我關心的重點。

artech認為:所**共用和可擴充套件性考慮,盡量使用abstract class。當然介面在其他方面的優勢,我認為也不可忽視。

shenfx認為:當在差異較大的物件間尋求功能上的共性時,使用介面;當在共性較多的物件間尋求功能上的差異時,使用抽象基類。

最後,有關c#介面和抽象類的學習,msdn的建議:

如果預計要建立元件的多個版本,則建立抽象類。抽象類提供簡單易行的方法來控制項版本。通過更新基類,所有繼承類都隨更改自動更新。另一方面,介面一旦建立就不能更改。如果需要介面的新版本,必須建立乙個全新的介面。

如果建立的功能將在大範圍的全異物件間使用,則使用介面。抽象類應主要用於關係密切的物件,而介面最適合為不相關的類提供通用功能。

如果要設計小而簡練的功能塊,則使用介面。如果要設計大的功能單元,則使用抽象類。

如果要在元件的所有實現間提供通用的已實現功能,則使用抽象類。抽象類允許部分實現類,而介面不包含任何成員的實現。

**

c 介面和抽象類的區別

一 抽象類 抽象類是特殊的類,只是不能被例項化 除此以外,具有類的其他特性 重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能宣告於抽象類中,且不包含任何實現,派生類必須覆蓋它們。另外,抽象類可以派生自乙個抽象類,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其派生類必須覆蓋它們。...

c 介面和抽象類的區別

一 抽象類 抽象類是特殊的類,只是不能被例項化 除此以外,具有類的其他特性 重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能宣告於抽象類中,且不包含任何實現,派生類必須覆蓋它們。另外,抽象類可以派生自乙個抽象類,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其派生類必須覆蓋它們。...

C 介面和抽象類的區別

大家都容易把這兩者搞混,我也一樣,在聽李建忠老師的設計模式時,他也老把抽象類說成介面,弄的我就更糊塗了,所以找了些網上的資料.一 抽象類 抽象類是特殊的類,只是不能被例項化 除此以外,具有類的其他特性 重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能宣告於抽象類中,且不包含任何實現,...