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()
就是一個靜态類中的靜态方法