Re: [問題] 關於向上轉型

作者: jackblack   2016-10-09 02:07:43
※ 引述《DisdainU (莖莖濡吮汁)》之銘言:
: class Derived extends PrivateOverride{}
: public class PrivateOverride{
: private void f(){
: System.out.println("private f()");
: }
: public static void main(String[] args){
: PrivateOverride p=new Derived();
: p.f();
: }
: }
: /* output:
: private f()
: */
: 想問的是 既然base class的f()是private
: 也就代表在Derived中看不到f()
: 那為什麼例子中卻可以執行出結果?
: 手機排版 請見諒
:
作者: v9290026 (CH)   2016-10-09 02:19:00
推!
作者: DisdainU (莖莖濡吮汁)   2016-10-09 02:47:00
意思是說,如果我在Derived中加入同樣的f(),但將此method改成public(意味兩個f()為不一樣的method只是名字一樣),其餘不變,執行結果依然是呼叫private method,是因為java在操作物件是先以reference的型別為主。我這樣理解有誤嗎?
作者: haha02 (來人!上夾棍!)   2016-10-09 03:42:00
應該是因為private method無法被override 兩者視為不同的method吧你到Derived#f()[email protected]如果會表示沒有override到
作者: DisdainU (莖莖濡吮汁)   2016-10-09 12:52:00
瞭解了!謝謝解答
作者: v9290026 (CH)   2016-10-09 17:26:00
[email protected]

Links booklink

Contact Us: admin [ a t ] ucptt.com