Re: [問題] 認證書籍的問題

看板java作者 (盲人騎瞎馬,夜半臨深池)時間10年前 (2015/06/17 14:48), 10年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
原文恕刪。 手機請切換至整頁模式,才看得到排版。 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
文章代碼(AID): #1LWHWmOv (java)
文章代碼(AID): #1LWHWmOv (java)