[問題] 物件的屬性與其方法的局部變數釐清

看板java作者 (下課中)時間18年前 (2007/08/02 19:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
基本上我已經看過書也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)
文章代碼(AID): #16iRx-xp (java)
文章代碼(AID): #16iRx-xp (java)