我们先来写一个小代码
新建一个包
在包下新建两个类
一个名叫 Telephone
Telephone类参考代码如下
public class Telephone {
private int shou;
public void setShou(int shou){
shou = shou;
}
public int getShou(){
return shou;
}
}
然后测试类叫 text
text参考代码如下
public class text {
public static void main(String args[]) {
Telephone telephone = new Telephone();
telephone.setShou(13);
System.out.println(telephone.getShou());
}
}
这里很明显 我们在Telephone中创建了一个成员变量shou 然后给他定义了 get 和 set方法
然后 我们在text中实例化Telephone对象 调用shou的set方法 给他赋值为 13
然后调用他的get 方法 在System.out.println中打印结果
运行结果如下
按道理来讲 我们用set赋值为 13 那么他的值应该是13 那么为什么是0呢?
问题出在shou 的set方法上
public void setShou(int shou){
shou = shou;
}
因为方法接受的参数取名和成员变量的名字一样了 系统看不懂你要用哪一个 就都用方法的参数了
我们只需要将代码改成
public void setShou(int shou){
this.shou = shou;
}
我们的值就能正常使用了
简单说
当局部变量 方法参数 和 类的成员变量重名时 this.变量名 就能准确的拿到成员变量 直接用变量名 则程序优先去拿 局部或方法参数
我知道你们在好奇什么
若方法参数和局部变量重名 则直接报错
那么 你学废了吗?



