this關鍵字
沒使用this關鍵字
package com.imooc;
//import com.imooc.second.people;
public class packAge {
? ?private int Eyes;
? ?private int nose;
? ?private int ears;
? ?public static void main(String[] args){
? packAge hello = new packAge();
? hello.seteyes(5);
int aa= ? hello.geteyes();
? ?System.out.println("Eyes:"+aa);
? ?}
public int geteyes(){
return Eyes;
}
public void seteyes(int Eyes){
? Eyes=Eyes;
}
}
運行結果:
Eyes:0
使用this關鍵字
this. Eyes=Eyes;
運行結果:
Eyes:5
我想請問出現0的情況是怎么回事?
2017-08-20
沒有使用this關鍵字,你的set方法里邊的賦值是沒有意義的,它相當于把一個set 方法里的一個私有變量 Eyes等于自己的值,而整個類里邊的全局變量Eyes并沒有被賦值,當你打印的時候,它還是用的自己初始化的默認值0。
2017-08-20
方法是放在方法區的,方法只有那么一個,但是會調用它的對象會很多,在該代碼中this強調是當前對象調用了方法,沒有this,就不知道是誰調用了方法。ps:左邊的Eyes是屬性,右邊的是變量,變量由形參傳入數據。
2017-08-20
public void seteyes(int Eyes){
? Eyes=Eyes;
}
這里你改變 的 Eyes 只是 該方法里面的 Eyes 變量
而
public void seteyes(int Eyes){
? this.Eyes=Eyes;
}
改變的是 this.Eyes 這個屬性?
之所以 Eyes = 0 ,是因為方法的Eyes 變量 和 Eyes 屬性的變量名重復了,方法優先選擇Eyes
所以,你可以試試
public void seteyes(int a){
? Eyes=a;
}
這時候輸出 Eyes = 5 ;