第一階段,java核心技術:Java中this關鍵字的詳解

在java的學習中,當接觸到類這一章的時候,就會避免不了的接觸到this關鍵字。首先,this關鍵字指向的是當前對象的引用作用: this.屬性名稱 指的是訪問類中的成員變量,用來區分成員變量和局部變量(重名問題)

<code>



class Test_08{
\tpublic static void main(String [] args){
\t\t//調用無參構造函數,
\t\tPerson p1 = new Person();
\t\tp1.setAge(20);
\t\tp1.setName("張三");
\t\tp1.setGender("男");
\t\tSystem.out.println(""+p1.getName()+" 今年"+p1.getAge()+"歲 性別為:"+p1.getGender());
\t}
\t
}
class Person{
\tprivate String name;
\tprivate int age;
\tprivate String gender;
\tPerson(){}
\tPerson(String name,int age,String gender){
\t\tthis.name = name;
\t\tthis.age = age;
\t\tthis.gender = gender;
\t}
\tpublic void setName(String name){
\t\tname = name;
\t}
\tpublic String getName(){
\t\treturn name;
\t}
\tpublic void setAge(int age){
\t\tage = age;
\t}
\tpublic int getAge(){
\t\treturn age;
\t}
\tpublic void setGender(String gender){
\t\tgender = gender;
\t}
\tpublic String getGender(){
\t\treturn gender;
\t}
}
/<code>

對Test_08運行後發現,調用的set方法並沒有對 對象中的變量進行賦值,是因為,傳入的參數變量名與類中屬性變量名重複,因此我們在set方法和有參構造方法中加上了this.類屬性名稱,這樣就可以完成對 對象變量的賦值。如下圖:

<code>         this.方法名稱              

用來訪問本類的成員方法
this();

訪問本類的構造方法

()中可以有參數的 如果有參數 就是調用指定的有參構造
注意事項:
1.this() 不能使用在普通方法中 只能寫在構造方法中
2.必須是構造方法中的第一條語句
/<code>

例如,當我們把this()放在有參構造函數的末尾時,例如用this("哈哈");我們先不管語法是否有錯誤,試著按照程序的運行來判斷一下結果,我們可以看出,當在創建對象時,假定調用含有this(“哈哈”)的構造函數,則剛開始存放的值,會被this(“哈哈”)調用的只含有一個參數的構造函數覆蓋,也就是說,最後的name會變成“哈哈”,這是與我們的初衷相違背的,而且運行結果也是報錯,

當我們換到構造方法的第一句時,則不會有這種錯誤,因為它並不會影響到後面name的賦值。

我們接下來把this語句放在構造函數的第一句位置,

就不會有報錯

第一階段,java核心技術:Java中this關鍵字的詳解


分享到:


相關文章: