c#介面和抽象類的相同:
1.都不能對方法或屬性的具體的實現;
2.都可以被繼承;
3.都不可以被例項化。
c#介面和抽象類的區別:
1.介面是一種型別,不能包含靜態的成員,不能包括變數的定義,定義的方法或屬性預設為public的,不能加public修飾,繼承介面的類在實現介面的成員時必須為public的。
2.抽象類本身是類的修飾符,不是一種型別,可以有靜態的成員,變數的定義,非抽象的方法(但必須實現),可以有virtual方法,抽象類的子類必須全部實現父類中的抽象的
成員,且應與父抽象類的抽象成員的修飾一致(即public或protected).
c#介面和抽象類絕對經典示例
.net framework是學習的最好資源,有意識的研究fcl是每個.net程式設計師的必修課,關於介面和抽象類在fcl中的使用,我有以下的建議:
c#介面和抽象類animal示例
下面的例項,因為是我的理解,因此給經典打上「相對」的記號,至於什麼時候晉公升為「絕對」,就看我在.net追求的路上,是否能夠一如既往的如此執著,因此我將把相對重構到絕對為止(呵呵)。 本示例沒有闡述抽象類和介面在設計模式中的應用,因為那將是另一篇有討論價值的文字,本文著眼與概念和原則的把握,但是真正的應用來自於具體的需求規範。
設計結構如圖所示:
1. 定義抽象類
publicabstractclassanimal2. 定義介面//宣告抽象方法
publicabstractvoidshow();
//實現一般方法
publicvoidmakevoice()
}
publicinte***ceiaction3. 實現抽象類和介面
publicclassduck : animal, iaction4. 客戶端實現//過載抽象方法
publicoverridevoidshow()
//過載抽象屬性
publicoverridestringname
}
//實現介面方法
publicvoidmove()
}
publicclassdog : animal, iaction
publicoverridevoidshow()
publicoverridestringname
}
publicvoidmove()
}
publicclasstestanmialdunai認為:抽象類是提取具體類的公因式,而介面是為了將一些不相關的類「雜湊」成乙個共同的群體。至於他們在各個語言中的句法,語言細節並不是我關心的重點。}
artech認為:所**共用和可擴充套件性考慮,盡量使用abstract class。當然介面在其他方面的優勢,我認為也不可忽視。
shenfx認為:當在差異較大的物件間尋求功能上的共性時,使用介面;當在共性較多的物件間尋求功能上的差異時,使用抽象基類。
最後,有關c#介面和抽象類的學習,msdn的建議:
如果預計要建立元件的多個版本,則建立抽象類。抽象類提供簡單易行的方法來控制項版本。通過更新基類,所有繼承類都隨更改自動更新。另一方面,介面一旦建立就不能更改。如果需要介面的新版本,必須建立乙個全新的介面。
如果建立的功能將在大範圍的全異物件間使用,則使用介面。抽象類應主要用於關係密切的物件,而介面最適合為不相關的類提供通用功能。
如果要設計小而簡練的功能塊,則使用介面。如果要設計大的功能單元,則使用抽象類。
如果要在元件的所有實現間提供通用的已實現功能,則使用抽象類。抽象類允許部分實現類,而介面不包含任何成員的實現。
**
c 介面和抽象類的區別
一 抽象類 抽象類是特殊的類,只是不能被例項化 除此以外,具有類的其他特性 重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能宣告於抽象類中,且不包含任何實現,派生類必須覆蓋它們。另外,抽象類可以派生自乙個抽象類,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其派生類必須覆蓋它們。...
c 介面和抽象類的區別
一 抽象類 抽象類是特殊的類,只是不能被例項化 除此以外,具有類的其他特性 重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能宣告於抽象類中,且不包含任何實現,派生類必須覆蓋它們。另外,抽象類可以派生自乙個抽象類,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其派生類必須覆蓋它們。...
C 介面和抽象類的區別
大家都容易把這兩者搞混,我也一樣,在聽李建忠老師的設計模式時,他也老把抽象類說成介面,弄的我就更糊塗了,所以找了些網上的資料.一 抽象類 抽象類是特殊的類,只是不能被例項化 除此以外,具有類的其他特性 重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能宣告於抽象類中,且不包含任何實現,...