一.構造函數
上次說到類是封裝了屬性和方法的實體的集合,面向對象編程過程把所有的東西都看成對象,而且世界上沒有一模一樣的對象,所以在創建對象的時候要對對象的屬性進行初始化.在定義基本類型變量的時候.聲明一個對象的方法如下:
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作為一個變量類型表示對調用該方法的結構。