作者Egriawei (下课中)
站内java
标题[问题] 物件的属性与其方法的局部变数厘清
时间Thu Aug 2 19:24:42 2007
基本上我已经看过书也compile过程式了
不过对於自己归纳的结论还是有点疑惑
想请各位不吝指证
===============================================
class Base {
private int num,num2,num3;
void setNum(int num) {
num2 = this.num;
num3 = num;
this.num = num;
}
void showData() {
System.out.println("num:" + num);
System.out.println("num2:" + num2);
System.out.println("num3:" + num3);
}
}
class test {
public static void main(String[] args){
Base b1 = new Base();
b1.showData();
b1.setNum(10);
b1.showData();
}
}
=============================================
以下是我的结论,想请问有无错误或不足
1.以Base类别宣告b1物件後
b1物件宣告了int型态的num,num2,num3变数并有起始其值,为0
所以第一次呼叫showData方法时三个变数印出来都是0
2.而呼叫setNum方法并传入10後,因传入参数与物件属性同名皆为num
所以要以this来区分,首行this.num还是0而不是传入参数num的10
this.num其值复制一份给num2,num2是0
3.方法次行num复制给num3,结果是用传入参数的num值去复制
同理第三行传入参数复制给b1的num属性
结果第二次印出来num3跟num都是10
我想确认的就是
方法中一旦传入的参数名称与物件属性同名
java是不是优先认定其代表的是传入参数的值或参考?
如果是,那麽如果仅是同名但变数型态却不同
接收传入参数的变数,其型态是否也是要跟传入参数一样?
而这种时候依变数型态而异this.num = num可能就会有问题了是吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.27.184
※ 编辑: Egriawei 来自: 61.230.27.184 (08/02 19:27)