[問題] 物件的屬性與其方法的局部變數釐清
基本上我已經看過書也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)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):