Re: [問題] 繼承及變數問題

看板java作者 (痞子軍團團長)時間12年前 (2013/03/09 16:44), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《warren4145 (warren)》之銘言: : class2 c2 =new class2(); : c2.run(); : public class class1{ : protected int i; : class1(){ : i=2; : } : } : public class class2 extends class1 { : class2(){ : } : private void change(int i){ : ++i; : System.out.println("change i:"+ i); : } 先別管什麼 call by reference 了,你聽過 scope 嗎? 問題在於 `change()` 的參數 `i` 跟 class1 裡頭設定的 attribute `i` 是同一個嗎? 如果是這樣呢? private void change(int foo){ ++i; System.out.println("blahblah :" + i); } 那會得到什麼結果? 當然,更根本(但也許跟你的主題無關)的問題在於 為甚麼你要在 `run()` 當中傳入 i? 如果你想探討 call by reference 還是什麼可怕的東西 那我建議你先跳過繼承,回歸到傳統函數呼叫的寫法去理解 : public void run(){ : change(i); : System.out.println("c2 i:"+i); : } : } : 我用class1放我想放的變數 : 用class2去繼承class1 : 在main中使用class2 run method : 可是我在class2中想要寫一個method來修改i : 但是傳進去的變數在改變值離開後 : 到了外面值還是原本的 : 想問一下java 有call by reference的機制嗎 : 還是只能全部寫在同一個method內了? : 麻煩大家幫忙解惑一下 感激不盡~ -- 錢鍾書: 說出來的話 http://www.psmonkey.org 比不上不說出來的話 Java 版 cookcomic 版 只影射著說不出來的話 and more...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.12.56
文章代碼(AID): #1HElPqHc (java)
文章代碼(AID): #1HElPqHc (java)