類別的宣告:
一個類別中,通常會含有「類別成員」、「類別成員函式」、「類別建構式」,三者皆可以有任意個。若三者皆沒設定,則這種類別稱為「空類別」。
(1) 整體宣告:
class 類別名稱
{
類別成員宣告式
類別成員函式宣告式
類別建構式
};
(1-1) 類別成員宣告式的寫法為:
存取修飾詞 成員資料型態 成員名稱 = 值;
其中,存取修飾詞代表著該成員在被本類別外的物件存取時受到怎樣的限制。
存取修飾詞有三種寫法,如下:
public:表示此成員可以被任何類別、類別物件所存取。
protected:表示此成員只能被該類別本身、和該類別的衍生類別存取。無法被該類別物件、其他類別、其他類別物件存取。
private:表示此成員只能被該類別本身存取。
列表如下(○代表可存取、×代表不可存取):
存取修飾詞 |
本身類別 |
本身類別物件 |
衍生類別 |
衍生類別物件 |
其他類別 |
其他類別物件 |
public |
○ |
○ |
○ |
○ |
○ |
○ |
protected |
○ |
× |
○ |
× |
× |
× |
private |
○ |
× |
× |
× |
× |
× |
若不寫存取修飾詞,則預設該成員為private。
(1-2) 類別成員函式宣告式的寫法為:
存取修飾詞 回傳資料型態 成員函式名稱(參數資料型態一 參數一, 參數資料型態二, 參數二…)
{
//函式內容
}
其中,存取修飾詞的寫法與類別成員宣告式中的存取修飾詞寫法相同。
(1-3) 類別建構式像是一個函式,使用者可用此建構式來宣告該類別的物件。其寫法為:
存取修飾詞 類別名稱(參數資料型態一 參數一, 參數資料型態二, 參數二…)
{
//函式內容
}
其中,存取修飾詞的寫法與類別成員宣告式中的存取修飾詞寫法相同。若欲在類別本身之外建立該類別物件,則存取修飾詞應寫為public。
※ 註一:若程式設計者沒有設定類別建構式,則C#會預設一個類別建構式,為:
public void類別名稱(){ }
※ 註二:在類別宣告式之內,可用this關鍵字,來代表類別本身。
※ 參考:在類別中,也可以宣告「解構式」,不過這並不常用。解構的的寫法為:
~類別名稱()
{ //解構式內容 }
解構式不使用參數和存取修飾詞。其功用,通常是由系統在編譯時自行判斷該物件是否還需要使用,若不需要,就依照解構式將其從記憶體中拿出,免得佔用記憶體空間。是故,解構式通常不需由程式設計者去呼叫,系統自會判斷何時該解構。若程式設計者要強制在類別外執行解構式,可用:
System.GC.Collect();
不過若是使用時機有誤,會造成記憶體效能的損失,切勿輕易使用。
(2) 分開宣告:
所謂類別的分開宣告,並不像上述的整體宣告一樣,把所有的成員、成員函式、建構式都寫在同一個宣告式中,而是分開寫在幾個不同的宣告式中。這種宣告法在類別裡的成員太多、種類太雜時,比較用的上。可以利用關鍵字partial以達成分開宣告。
以下為一個名為person的類別,其「整體宣告」的寫法:
class person //這是第一個宣告式
{
public string name;
public int age;
public person(string n_, int a_)
{ name = n_; age = a_; }
public string self_introduction()
{ return "hi, I'm " + name + "," + age + "years old."; }
};
與一個「分開宣告」的寫法:
partial class person //這是第一個宣告式
{
public string name;
public person(string n_, int a_)
{ name = n_; age = a_; }
};
partial class person //這是第二個宣告式
{ public int age;};
partial class person //這是第三個宣告式
{ public string self_introduction(){ return "hi, I'm " + name + "," + age + "years old."; }};
此兩者雖然在寫法上有別,但其效果和類別物件的使用方法是完全一樣的。
※ 要注意,分開宣告時,每一個宣告式之前多了一個partial關鍵字。
留言列表