慕仰9213596
2017-08-20 12:04
没使用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的情况是怎么回事?
没有使用this关键字,你的set方法里边的赋值是没有意义的,它相当于把一个set 方法里的一个私有变量 Eyes等于自己的值,而整个类里边的全局变量Eyes并没有被赋值,当你打印的时候,它还是用的自己初始化的默认值0。
方法是放在方法区的,方法只有那么一个,但是会调用它的对象会很多,在该代码中this强调是当前对象调用了方法,没有this,就不知道是谁调用了方法。ps:左边的Eyes是属性,右边的是变量,变量由形参传入数据。
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 ;
Java入门第二季 升级版
530559 学习 · 6091 问题
相似问题