天天看點

C#類中的成員

C#類中的成員

      • 字段
      • 屬性
      • 方法
      • 構造函數
          • 類和對象的簡單解釋
          • 建立類和對象
      • 類中成員的歸屬問題

字段

字段的聲明與聲明變量類似,可以添加通路修飾符,通常情況下字段設定為私有的,然後定義屬性對字段的讀寫進行限制

一般的命名規範約定,私有字段使用下劃線字首、小駝峰命名

屬性

屬性擁有兩個通路器(get和set),用于控制讀取和寫入,通常和字段配套使用,用來對字段進行讀寫限制

//定義一個Age屬性,限制指派給_age字段的值為18到60歲之間
//get和set類似于不能接受參數的方法,value是賦給Age屬性的值
public int Age      
{
    get { return _age; }
    set {
        if(value >= 18 && value<=60)
            _age = value;
    }
}
           

方法

正式的C#術語中區分函數和方法,但是在初期,我們也可以把方法當成函數來了解

//定義一個SayAge方法,傳遞一個int類型的變量給SayAge方法,輸出“我的年齡是~”
public void SayAge(int age)
{
    Console.WriteLine($"我的年齡是{age}")
}
           

構造函數

構造函數是在建立對象的時候調用的方法,主要作用是初始化字段(為字段指派),構造函數支援重載,即根據不同的參數簽名(參數清單和參數類型共同組成),調用不同的構造函數

//定義Pen類,并建立構造方法
class Pen
{
    private int _price;
    //無參構造方法,将_price字段初始化為0
    public Pen()
    {
        this._price = 0;
    }
    //接收一個int類型的構造方法,将_price字段初始化為傳遞進來的price變量
    public Pen(int price)
    {
        this._age = price;
    }
}
//注意事項:在如果沒有定義構造函數,編譯器會自動添加一個無參構造函數
//注意事項:如果自行定義了構造函數,無論帶幾個參數,編譯器就不會再自動添加無參構造函數,如有需要,需要手動聲明
//注意事項:如果構造函數沒有為字段指派,編譯器會将值類型初始化為0,引用類型初始化為NULL

           
類和對象的簡單解釋

類是類别,是一個虛指;對象是具體的,是一個實指。如鋼筆是一個類,我的價值15塊的鋼筆就是一個對象。

建立類和對象
//借用上方的Pen類,建立一個對象
Pen myPen = new Pen(15);
//此條語句建立了一個myPen對象,并調用Pen(int price)構造函數将myPen對象的_price字段指派為15
           

類中成員的歸屬問題

類中的成員有靜态和非靜态的差別,非靜态成員每個對象都有一份,靜态成員類有一份

Pen myPen = new Pen(15);
Pen hePen = new Pen(150);
//上方Pen類中price字段定義為非靜态成員
//在定義myPen和hePen兩個對象中,每個對象都有自己的_price字段
           

靜态成員屬于類,對象是沒有的,且一個類的每個靜态成員隻有一份

//靜态成員使用static修飾
//在Pen中定義一個Write靜态方法,這個方法屬于類,使用類名.方法名調用,例如這裡需要調用此靜态方法的語句是Pen.Write()
class Pen
{
    public static void Write()
    {
        Console.WriteLine("筆可以寫字");
    }
}
//注意事項:類的靜态成員與對象無關,即執行個體化的Pen的對象myPen,是沒有Write()方法的
//注意事項:每個類的每個靜态成員隻有一份,即Pen.Wirte()指向的方法和使用Pen執行個體化若幹個對象後調用的Pen.Write()是同一個
           

類也可以定義為靜态,靜态類不能再執行個體化對象,定義靜态類的主要作用是提供一些常用方法

如C#中的

Console.WriteLine()

就是一個靜态類中的靜态方法