Re: [問題] 繼承及變數問題
※ 引述《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
討論串 (同標題文章)