2019-8-17 seo達人
在java的學習中,當接觸到類這一章的時候,就會避免不了的接觸到this關鍵字。
首先,this關鍵字指向的是當前對象的引用
作用:
this.屬性名稱
指的是訪問類中的成員變量,用來區(qū)分成員變量和局部變量(重名問題)
class Test_08{
public static void main(String [] args){
//調用無參構造函數(shù),
Person p1 = new Person();
p1.setAge(20);
p1.setName("張三");
p1.setGender("男");
System.out.println(""+p1.getName()+" 今年"+p1.getAge()+"歲 性別為:"+p1.getGender());
}
}
class Person{
private String name;
private int age;
private String gender;
Person(){}
Person(String name,int age,String gender){
this.name = name;
this.age = age;
this.gender = gender;
}
public void setName(String name){
name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
age = age;
}
public int getAge(){
return age;
}
public void setGender(String gender){
gender = gender;
}
public String getGender(){
return gender;
}
}
對Test_08運行后發(fā)現(xiàn),調用的set方法并沒有對 對象中的變量進行賦值,是因為,傳入的參數(shù)變量名與類中屬性變量名重復,因此我們在set方法和有參構造方法中加上了this.類屬性名稱,這樣就可以完成對 對象變量的賦值。如下圖:
this.方法名稱
用來訪問本類的成員方法
this();
訪問本類的構造方法
()中可以有參數(shù)的 如果有參數(shù) 就是調用指定的有參構造
注意事項:
1.this() 不能使用在普通方法中 只能寫在構造方法中
2.必須是構造方法中的第一條語句
例如,當我們把this()放在有參構造函數(shù)的末尾時,例如用this("哈哈");我們先不管語法是否有錯誤,試著按照程序的運行來判斷一下結果,我們可以看出,當在創(chuàng)建對象時,假定調用含有this(“哈哈”)的構造函數(shù),則剛開始存放的值,會被this(“哈哈”)調用的只含有一個參數(shù)的構造函數(shù)覆蓋,也就是說,最后的name會變成“哈哈”,這是與我們的初衷相違背的,而且運行結果也是報錯,
當我們換到構造方法的第一句時,則不會有這種錯誤,因為它并不會影響到后面name的賦值。
我們接下來把this語句放在構造函數(shù)的第一句位置,
就不會有報錯
————————————————
版權聲明:本文為CSDN博主「BetterShon」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權協(xié)議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_42386014/article/details/81138684