一.建構函式
上次說到類是封裝了屬性和方法的實體的集合,物件導向編程過程把所有的東西都看成對象,而且世界上沒有一模一樣的對象,所以在建立對象的時候要對對象的屬性進行初始化.在定義基本類型變數的時候.聲明一個對象的方法如下:
int myint = 3;
但是在建立對象型資料的時候要用到關鍵字new來完成對象的建立.最基本的string類型對象的建立方法如下:
string name = new string("Lu xiaofeng");
這裡在調用name的時候記憶體中會載入 name=”Lu xiaofeng”.
對象型資料必須在建立後才能使用,否則會出現錯誤一下:可能尚未初始設定變數.另一個比較重要的概念就是建構函式,每一個類都有一個預設的建構函式來初始化對象的一些資料.同時要注意的是建構函式的形式:
| |
建構函式的函數名必須與類的名字相同,而且是沒有任何傳回值,也不允許用void來修飾.但是建構函式允許重載:一個類中可以用多個不同的建構函式來滿足建立對象.例如在Person類中有兩個建構函式: public Person(){}建構函式 |
和public Person(String name,String sex,int age,double weight)//建構函式.當我們在定義一個Person類的變數的時候; Person myman=new Person();同時也可以用另一個建構函式來初始化一個對象.Person niu=new Person("name","man",22,99);但是這個對象和myman對象是不一樣的.但是這兩個對象的屬性是不一樣.
二.this的引用
我們先來看下兩個建構函式的具體內容:
| public Person() { name = "Lu xiaofeng"; sex = "man"; age = 22; weight = 99; } |
public Person(string name, string sex, int age, double weight) { this.name = name; this.sex = sex; this.age = age; this.weight = weight; }//建構函式二 |
在第二個建構函式中多了個this,this的作用是用來指定”這個”的.尤其是在下面的情況:
public string name public string sex;public int age;public double weight;
這四個欄位的名字與建構函式public Person(string name, string sex, int age, double weight)的參數一樣的時候.this是用來指定當前這個對象的.
當然我們可以把public Person(string name, string sex, int age, double weight)的參數換成其他的名字. public Person(string myname, string mysex, int myage, double myweight).這個並不會影響程式的結果,但是如果把上表建構函式二中的中的this去掉,來看看有甚麼影響.建立兩個對象.person1,person2.
Person newman = new Person("lixiao", "woman", 11, 88);
Console.WriteLine("name={0},sex={1},age={2},weight={3}",newman.name, newman.sex, newman.age, newman.weight);
Person another = new Person();
Console.WriteLine("name={0},sex={1},age={2},weight={3}",another.name, another.sex, another.age, another.weight);
Console.ReadKey();
| public Person(string name, string sex, int age, double weight) { name = name; sex = sex; age = age; weight = weight; }//去掉 this後. |
|
去掉this後的效果.有關this的知識在後面還會介紹. 現在對this做個簡單的小節:this關鍵字引用被訪問成員所在的當前執行個體。靜態成員函數沒有this指標。this關鍵字可以用來從建構函式,執行個體方法和執行個體化訪問器中訪問成員。本文發表於編程入門網(bianceng.cn)
不能在靜態方法。靜態屬性訪問器或者域聲明的變數初始化程式中使用this關鍵字,這將會產生錯誤。
1.在類的建構函式中出現的this作為一個實值型別表示對正在構造的對象本身的引用。
2.在類的方法中出現this作為一個實值型別表示對調用該方法的對象的引用。
3.在結構的建構函式中出現的this作為一個變數類型表示對正在構造的結構的引用。
4.在結構的方法中出現的this作為一個變數類型表示對調用該方法的結構。