這節我們講 類的概述
我們一直說c#是面對對象的編程,而前面我們學了,每個對象都必定屬于一個類,.net 中已經定義好很多的類,但是,在實際的編程中,我們還必須得再量身為程序定制一些類.
C#中所有的類都直接或間接繼承自System.Object類,這使得C#中的類得以單根繼承。如果我們沒有明確指定繼承類,編譯器缺省認為該類繼承自System.Object類。System.Object類也可用小寫的object關鍵字表示,兩者完全等同
確切的說,類的主要成分有三個,當然還有一些,我們這里也不深究,以后等我學精了再出深入的教程時再說吧!
1,屬性:屬性儲存了對象的信息,我們前面說了,利用了存取器方法,所以他可以是只讀,也可以是可以讀可寫.
2,方法:方法可以讓你利用對象執行某個操作,其實也可以通過屬性設置來對其他的對象相互作用,但是方法可以完成一些復合操作。
3,事件:上節課我們才講了事件,他可以在被觸發的時候做相應的事。
最后,當我們完全定義好一個類后就可以對他封裝。在用的時候我們可以不管他如何完成任務的,只管知道他有哪些公共接口 ,有哪些屬性,有哪些方法和事件就可以了。這些統稱為類成員。
如我們前面所說的,我們可以利用類創建N個對象,可是他們都是孤立的,那我們有什么辦法可以讓兩個特定類之間的對象可以共享咧?
那就說到重點了,我們可以定義一系列方法或者屬性,把他們整體的應用到類上,而不是具體被用到某個類的對象上,他就是我們說的 共享成員(靜態成員) 。例如我們要知道發布了多少本書,就用到共享屬性count屬性,或者說我們對所有書的價格調整,就用以個共享方法 modemon() ,那可以給所有書都打8折。
類包含一些變量,這些變量的數據包含成員變量(我們前面常常說的私有變量)中,還包含一些運算代碼,而這些代碼則包含在成員函數中,我們也是通過成員函數來操作數據,在實際的操作中,我們也只是提供他的屬性,方法,事件等接口,數據部分則全部隱藏起來,或者說封裝起來。
成員變量、成員函數都統稱為類成員。他們又分為靜態和實體成員。
下面我們看下舉例
public static string aaa; --------靜態成員變量
public static void aaa() --------靜態成員函數
{
}
public string aaa; -------------實體成員變量
public void aaa() ---------------實體成員函數
{
}
注意到上面,靜態的都使用了 static 關鍵字
在使用上 靜態成員變量可以不申明對象直接使用
相反 實體成員就必須先申明對象實體,才能使用
總結下來就是: C#所有的對象都將創建在托管堆上。實例化后的類型我們稱之為對象,其核心特征便是擁有了一份自己特有的數據成員拷貝。這些為特有的對象所持有的數據成員我們稱之為實例成員。相反那些不為特有的對象所持有的數據成員我們稱之為靜態成員,在類中用static修飾符聲明。僅對靜態數據成員實施操作的稱為靜態函數成員。
還有 void : 一般方法或者函數執行后返回的可以是任何類型,如int或string。如果要寫一個不返回值的方法,那么必須用關鍵字void來取代返回類型。
那么上面我們肯定注意到 public 這個詞了,其實他還有三個兄弟呢 PRivate/protected/ internal ,他們被稱為存取修改器,用來控制外部對類成員的操作,以達到隱藏數據的目的。
下面我們分別來做解釋
public :任何外部的類都可以不受限制的存取類數據。
private: 限定此類內部使用
protected:除了類本身可以用外,任何繼承此類的類都可以使用
internal:表示在同一個應用程序(application)或類庫(Library)中都可以使用,不過這個我們基本上不用。
http://www.companysz.com/thcjp/archive/2006/09/15/505022.html新聞熱點
疑難解答