一,表示類中屬性
1,沒有使用this的情況
class personpublic string getinfo()
};public
class
thisdemo01
};執行結果:
姓名:null,年齡:0;
可以得出結論:此時並沒有正確將內容賦給屬性;
假設身邊有乙隻筆,遠處也有乙隻筆,肯定會就近拿身邊的筆。這在構造方法中一樣。
所以此時操作的name,age都是構造方法中定義的name,age.跟類中屬性完全不沾邊。
此時,為了明確哪個是類中的屬性,需要加上this.類中屬性。
class personpublic string getinfo()
};public
class
thisdemo02
};執行結果:
姓名:張三,年齡:33
如果在類中有多個構造方法,也可以利用this關鍵字互相呼叫。
假設乙個類中存在多個構造方法,但無論多少構造方法,都要打造乙個「新物件例項化」,此時就有兩種做法。
按照最原始方法:
class personpublic
person(string name)
public person(string name,int age)
public string getinfo()
};public
class
thisdemo03
};
因為以上紅色部分重複了,現在只是一行,感覺不出來,但是如果現在**很多行的話,缺陷立刻顯現出來了。
此時,最好讓構造方法間進行互相呼叫。
使用:this(若干引數)的形式完成。
packagemethoud;
class person
public
person(string name)
public person(string name,int age)
public string getinfo()
};public
class
thisdemo06
};執行結果:
新物件例項化
姓名:張三,年齡:33
注意點:
在使用this關鍵字呼叫其他關鍵字的時候,有以下限制:
1)this()呼叫其他構造方法的語句只能放在構造方法(在其他普通方法裡是不行的)的首行;
2)在使用this呼叫其他構造方法的時候,至少有乙個構造方法是不用this呼叫的。(必須要有結尾,不能無限期的呼叫下去,迴圈遞迴呼叫);
如下就會出錯:
packagemethoud;
class person
public
person(string name)
public person(string name,int age)
public string getinfo()
};public
class
thisdemo04
};
當前物件:當前正在呼叫方法的物件。
如下,分別用兩種方法列印物件per1和per2
class person};public
class
thisdemo06
};執行結果:
main方法 -->methoud.person@2a139a55
person類 -->methoud.person@2a139a55
main方法 -->methoud.person@15db9742
person類 --> methoud.person@15db9742
new關鍵字 this關鍵字 base關鍵字
使用new,所做的三件事 1.類是引用物件,引用物件是在堆中開闢空間 在堆中開闢空間 2.在開闢的堆空間中建立物件 3.呼叫物件的構建函式 4.隱藏父類成員 子類的成員可以與隱藏從父類繼承的成員,類似於重寫。public new void sayhello this關鍵字的使用 1.代表當前類的物件...
this關鍵字 static關鍵字
1.當成員變數和區域性變數重名,可以用關鍵字this來區分 this 代表物件,代表那個物件呢?當前物件 this就是所在函式所屬物件的引用 簡單說 那個物件呼叫了this所在的函式,this就代表哪個物件 this也可以用於在建構函式中呼叫其他建構函式 注意 只能定義在建構函式的第一行,因為初始化...
base關鍵字 this關鍵字
用於在派生類中實現對基類公有或者受保護成員的訪問,但是只侷限在建構函式 例項方法和例項屬性訪問器中。功能主要包括 1 呼叫基類上已被其他方法重寫的方法。2 指定建立派生類例項時應呼叫的基類建構函式。base常用於,在派生類物件初始化時和基類進行通訊。base可以訪問基類的公有成員和受保護成員,私有成...