作者PsMonkey (痞子军团团长)
看板java
标题Re: [问题] 继承及变数问题
时间Sat Mar 9 16:44:33 2013
※ 引述《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