這節我們講類的概述
我們一直說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 這個字了,其實他還有三個兄弟呢privateprotected internal ,他們被稱為存取修改器,用來控制外部對類別成員的操作,以達到隱藏資料的目的。
下面我們分別來做解釋
public :任何外部的類別都可以不受限制的存取類別資料。
private: 限定此類內部使用
protected:除了類別本身可以用外,任何繼承此類的類別都可以使用
internal:表示在同一個應用程式(Application)或類別庫(Library)中都可以使用,不過這個我們基本上不用。
http://www.cnblogs.com/thcjp/archive/2006/09/15/505022.html