为什么要调用超类的方法而不是子类?

时间:2009-10-01 02:06:15

标签: java

我有一个带有'update()'成员函数的基础'node'类

现在我有其他类扩展'node'类并覆盖'update'类。

但是我的所有节点都存储在一个数组中(类型为'node'),并且它们都会'依次更新'。

问题是它调用基节点类更新而不是我的覆盖函数。

我做错了什么? (我有@Override和函数名称相同,返回类型并且具有相同的参数)

EDIT OMG SORRY我正在编辑备份文件。现在工作。 SORRY SORRY

2 个答案:

答案 0 :(得分:0)

您应声明派生类型的数组

我的理解是:

Node[] array = {new node1, new node2}

你应该:

Node[] array = {new derived, derived} 

问题的关键是实例化派生类型的对象,但将它们视为节点。

例如

void foo (Node node){
  node.update()
}

bar(){
   foo (new Node())
   foo (new Derived())
}

答案 1 :(得分:-1)

在调用该函数之前,请尝试检查节点子类型和强制转换。