2019-8-17 seo達(dá)人
在java的學(xué)習(xí)中,當(dāng)接觸到類這一章的時(shí)候,就會(huì)避免不了的接觸到this關(guān)鍵字。
首先,this關(guān)鍵字指向的是當(dāng)前對(duì)象的引用
作用:
this.屬性名稱
指的是訪問(wèn)類中的成員變量,用來(lái)區(qū)分成員變量和局部變量(重名問(wèn)題)
class Test_08{
public static void main(String [] args){
//調(diào)用無(wú)參構(gòu)造函數(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;
}
}
對(duì)Test_08運(yùn)行后發(fā)現(xiàn),調(diào)用的set方法并沒(méi)有對(duì) 對(duì)象中的變量進(jìn)行賦值,是因?yàn)?,傳入的參?shù)變量名與類中屬性變量名重復(fù),因此我們?cè)趕et方法和有參構(gòu)造方法中加上了this.類屬性名稱,這樣就可以完成對(duì) 對(duì)象變量的賦值。如下圖:
this.方法名稱
用來(lái)訪問(wèn)本類的成員方法
this();
訪問(wèn)本類的構(gòu)造方法
()中可以有參數(shù)的 如果有參數(shù) 就是調(diào)用指定的有參構(gòu)造
注意事項(xiàng):
1.this() 不能使用在普通方法中 只能寫在構(gòu)造方法中
2.必須是構(gòu)造方法中的第一條語(yǔ)句
例如,當(dāng)我們把this()放在有參構(gòu)造函數(shù)的末尾時(shí),例如用this("哈哈");我們先不管語(yǔ)法是否有錯(cuò)誤,試著按照程序的運(yùn)行來(lái)判斷一下結(jié)果,我們可以看出,當(dāng)在創(chuàng)建對(duì)象時(shí),假定調(diào)用含有this(“哈哈”)的構(gòu)造函數(shù),則剛開(kāi)始存放的值,會(huì)被this(“哈哈”)調(diào)用的只含有一個(gè)參數(shù)的構(gòu)造函數(shù)覆蓋,也就是說(shuō),最后的name會(huì)變成“哈哈”,這是與我們的初衷相違背的,而且運(yùn)行結(jié)果也是報(bào)錯(cuò),
當(dāng)我們換到構(gòu)造方法的第一句時(shí),則不會(huì)有這種錯(cuò)誤,因?yàn)樗⒉粫?huì)影響到后面name的賦值。
我們接下來(lái)把this語(yǔ)句放在構(gòu)造函數(shù)的第一句位置,
就不會(huì)有報(bào)錯(cuò)
————————————————
版權(quán)聲明:本文為CSDN博主「BetterShon」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_42386014/article/details/81138684
藍(lán)藍(lán)設(shè)計(jì)的小編 http://www.88yangsc.com