我有點困惑,究竟是如何在Java中創建對象時使用多態性和擴展類等。Java中的多態性和從這些類創建對象
我最近遇到了一個問題,這裏有人幫我解決了問題(請參閱Not able to access object sub class's variable? (Java/Android))以瞭解背景。
我試圖創建像這樣的物體:
Quad hero = new Hero();
凡英雄是四的子類();
我有我的英雄類中的變量,我不是以上訪問。
的解決方案是我的對象創建更改爲:
Hero hero = new Hero();
這樣一來,通過我的英雄對象,我能夠訪問我的兩個Quad和英雄類的所有方法和變量。
我現在的問題是 - 這是爲什麼?
而且考慮到這一點,當會是用我原始的方法有用:
Quad hero = new Hero();
那一個對我來說很有意義的英雄也是四。我已經多次在Java代碼示例中看到過這種類型的聲明,並認爲我理解,但最近的事件已經證明不是。
將不勝感激,如果有人可以解釋這對我來說 - 感謝
嗯......有趣@jlordo,謝謝。所以如果我舉個例子,敵人1,敵人2,敵人3和英雄,都是以四邊形的形式創造出來的,並且想將它們組合成一個陣列,那麼我就可以像他們所有的四邊形一樣?但是,我將如何訪問僅存儲在子類中的變量? (比如說Hero子類有一個存儲在其中的變量,Enemy類沒有。我如何訪問這些變量,因爲它們不在基類中?我不能通過對象訪問它們,而不改變它們這是類型英雄,但我不能與敵人分組嗎?謝謝!! – Zippy 2013-04-28 22:53:32
@Zippy:這取決於你如何訪問這些變量,以及你想要與他們做什麼。如果先查看'instanceof'運算符,則可以安全地投射。我寧願製作一個'Quad'接口(或抽象類),只使用它的方法。無論如何,變量應該被封裝,所以你可以通過類中的方法訪問它們。 – jlordo 2013-04-29 01:48:15
謝謝@jlordo - 我可以請你編輯你的答案,舉一個你上面評論的例子嗎? (關於如何訪問變量,正如我在評論中所描述的那樣?我通常通過示例的方式發現它更容易理解) - 然後我將閱讀並標記您的答案 - 再次感謝,非常感謝! – Zippy 2013-04-29 18:34:05