![](/img/trans.png)
[英]Why does the superclass's version of a method have to be called before any of the subclass method's code?
[英]Why does superclass's method get called instead of subclass's?
我有一個帶有“ update()”成員函數的基本“節點”類
現在,我還有其他類可以擴展'node'類並覆蓋'update'類。
但是我所有的“節點”都存儲在一個數組(“節點”類型)中,它們都依次被“更新”。
問題是它調用了基節點類更新而不是我的重寫函數。
我究竟做錯了什么? (我有@Override並且函數是相同的名稱,返回類型並具有相同的參數)
抱歉,我正在編輯備份文件。 現在工作。 實在抱歉
您應該聲明派生類型的數組
我了解您擁有的是:
Node[] array = {new node1, new node2}
你應該有:
Node[] array = {new derived, derived}
問題的關鍵是實例化派生類型的對象,但將它們視為節點。
例如
void foo (Node node){
node.update()
}
bar(){
foo (new Node())
foo (new Derived())
}
在調用該函數之前,請嘗試檢查節點的子類型並進行強制轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.