2014-05-23 48 views
-1

做這樣的事情:在Java中,子類可以用屬性的子類替換屬性嗎?

class Foo { 
    Foo foo; 
    ... 
} 

class Bar extends Foo { 
    ... 
} 

class Baz extends Foo { 
    Bar foo; 
    ... 
} 

的作品,但我不知道,如果在Baz類,Bar foo實際上是從Foo父類取代的Foo foo實例。實際上,在Eclipse調試器中,似乎在Baz實例中,我們同時有一個Foo foo a Bar foo

我會稍微測試一下,如果我沒有得到答案。我期待能夠用Bar foo「覆蓋」Foo foo

+2

看看_hiding_。 –

+5

*如果我沒有得到答案,我會稍微測試一下。*請在測試之前測試。 – chrylis

+0

盡我們最大的尊重,從社區獲取關鍵字(隱藏*)確實幫助我找到相關文檔。實驗比較單調乏味(尤其是Java),並不總是給出全面的答案。例如我沒有想到當一個'Baz'實例從'Foo'調用一個繼承的方法時,'Foo foo'將被使用。 – jameh

回答

1

不,你不是更換foo場在Foo類,你只是宣佈一個新的,將影子該聲明(即只使用fooBaz將參考Bar領域)。

您總是可以將Bar實例指定給Foo foo變量。