c#類,接口,構造,籠統類引見 以及籠統和接口的比擬。本站提示廣大學習愛好者:(c#類,接口,構造,籠統類引見 以及籠統和接口的比擬)文章只能為提供參考,不一定能成為您想要的結果。以下是c#類,接口,構造,籠統類引見 以及籠統和接口的比擬正文
c#中的類是最罕見的實踐上就是對某品種型的對象定義變量和辦法的原型。
構造是值類型,而類是援用類型。
1.與類不同,構造的實例化可以不運用 new 運算符。構造可以聲明結構函數,但它們必需帶參數。
2.一個構造不能從另一個構造或類承繼,而且不能作為一個類的基。一切構造都直接承繼自 System.ValueType,後者承繼System.Object。
3.構造可以完成接口。構造在定義變量時不能給定初始值。假如要在構造中運用結構函數則必需給一切的變量賦值。
接口是援用類型的,相似於類,和籠統類的類似之處有三點:
1. 不能實例化;
2. 包括未完成的辦法聲明;
3. 派生類必需完成未完成的辦法,籠統類是籠統辦法,接口則是一切成員(不只是辦法包括其他成員);
另外,接口有如下特性:
接口除了可以包括辦法之外,還可以包括屬性、索引器、事情,而且這些成員都被定義為私有的。除此之外,不能包括任何其他的成員,例如:常量、域、結構函數、析構函數、靜態成員。一個類可以直接承繼多個接口,但只能直接承繼一個類(包括籠統類)。
籠統類是特殊的類,只是不能被實例化;除此以外,具有類的其他特性;重要的是籠統類可以包括籠統辦法,這是普通類所不能的。籠統辦法只能聲明於籠統類中,且不包括任何完成,派生類必需掩蓋它們。另外,籠統類可以派生自一個籠統類,可以掩蓋基類的籠統辦法也可以不掩蓋,假如不掩蓋,則其派生類必需掩蓋它們。
籠統類和接口的區別:
1. 類是對對象的籠統,可以把籠統類了解為把類當作對象,籠統成的類叫做籠統類.而接口只是一個行為的標准或規則,微軟的自定義接口總是後帶able字段,證明其是表述一類類“我能做。。。”。籠統類更多的是定義在一系列嚴密相關的類間,而接口大少數是關系疏松但都完成某一功用的類中;
2. 接口根本上不具有承繼的任何詳細特點,它僅僅承諾了可以調用的辦法;
3. 一個類一次可以完成若干個接口,但是只能擴展一個父類;
4. 接口可以用於支持回調,而承繼並不具有這個特點;
5. 籠統類不能被密封;
6. 籠統類完成的詳細辦法默許為虛的,但完成接口的類中的接口辦法卻默許為非虛的,當然您也可以聲明為虛的;
7.(接口)與非籠統類相似,籠統類也必需為在該類的基類列表中列出的接口的一切成員提供它自己的完成。但是,允許籠統類將接口辦法映射到籠統辦法上;
8. 籠統類完成了oop中的一個准繩,把可變的與不可變的別離。籠統類和接口就是定義為不可變的,而把可變的座位子類去完成;
9. 好的接口定義應該是具有專注功用性的,而不是多功用的,否則形成接口淨化。假如一個類只是完成了這個接口的中一個功用,而不得不去完成接口中的其他辦法,就叫接口淨化;
10. 盡量防止運用承繼來完成組建功用,而是運用黑箱復用,即對象組合。由於承繼的層次增多,形成最直接的結果就是當你調用這個類群中某一類,就必需把他們全部加載到棧中!結果可想而知。(結合堆棧原理了解)。同時,有心的冤家可以留意到微軟在構建一個類時,很多時分用到了對象組合的辦法。比方 asp.net中,Page類,有Server Request等屬性,但其實他們都是某個類的對象。運用Page類的這個對象來調用另外的類的辦法和屬性,這個是十分根本的一個設計准繩;
11.假如籠統類完成接口,則可以把接口中辦法映射到籠統類中作為籠統辦法而不用完成,而在籠統類的子類中完成接口中辦法。
籠統類和接口的運用:
1. 假如估計要創立組件的多個版本,則創立籠統類。籠統類提供復雜的辦法來控制組件版本;
2.假如創立的功用將在大范圍的全異對象間運用,則運用接口。假如要設計小而精練的功用塊,則運用接口;
3.假如要設計大的功用單元,則運用籠統類。假如要在組件的一切完成間提供通用的已完成功用,則運用籠統類;
4.籠統類次要用於關系親密的對象;而接口合適為不相關的類提供通用功用。