Re: [問題] 認證書籍的問題
原文恕刪。
手機請切換至整頁模式,才看得到排版。
B 繼承 A 之後,B、A 都可使用同一塊記憶體空間 static int x
當 main() 做了 B b = new B(); 之後
一、它先去呼叫了父類別建構子「super()」,於是對 x + 1,當時
x 的值為 1
二、子類別又做 x--,於是 x 的值為 0
接下來 main() 做了 fun(b)
要注意的是,變數 b 是指向 class B 的實例,class B 已經 override fun()
所以
public static void fun(A y)
{
y.fun();
}
雖然宣告成 class A,但因為 instance 是 class B 所以仍會去呼叫 class B 的
fun()
值從 0 再被減 1 變成 -1
順便一提,若我程式改成這樣呢?
public static void main(String[] argv) {
A a = new B();
fun(a);
System.out.println(a.x);
}
x 仍為 -1,看實例(instance)是誰就好了
程式改成這樣呢?
public static void main(String[] argv) {
A a = new A();
fun(a);
System.out.println(a.x);
}
x 的值會為 2,一樣,看實例(instance)是誰,就呼叫誰的 fun()
希望有幫到你,祝您工作順利。金榜提名。
--
※ 編輯: fcouple (211.76.33.33), 06/17/2015 14:49:42
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
1
4
java 近期熱門文章
PTT數位生活區 即時熱門文章