【发布时间】:2020-12-05 14:33:05
【问题描述】:
我有 4 个单独的类 UI,Parent、child1 和 child2。 我有一个包含 child1 和 child2 的父堆栈。 我试图在迭代堆栈时调用一个方法,该方法根据它是 child1 还是 child2 类型而改变。
我尝试在 parent 中创建一个抽象方法并覆盖 child1 和 child2 中的方法,但它说方法不会覆盖或从超类型实现。
我尝试在父级中创建一个公共的空方法并覆盖每个子案例中的方法,但是当我从 UI 中的 main 调用该方法时,它会调用空方法。
我通过查看堆栈中的 instanceof 找到了一种解决方法,但我后来在尝试保存/加载数据的程序中遇到了问题。请查看下面的粗略代码,如有任何问题,请告诉我。
public abstract class parent {
public void addToPuzzle(){};
}
public class child1 extends parent {
public void addToPuzzle(abc)
}
public class child2 extends parent {
public void addToPuzzle(wxyz)
}
public class ui{
public void undoMove(){
for(parent p : oldStack){
p.addToPuzzle();
}
}
}
【问题讨论】:
-
子类中的
method(someargument)不会覆盖超类中的method();参数列表必须匹配。 -
父函数
addToPuzzle没有任何参数。但似乎addToPuzzle在子类中接受了参数,这就是函数没有被覆盖的原因。当你有 UserEntry 类时,代码也让我感到困惑,它与父级有什么关系。你也没有提到函数addToPuzzle(wxyz)和public void addToPuzzle(abc)中的参数类型 -
@DeepakPatankar 抱歉,用户条目应该是父项。对于父堆栈中的每个 p 我想调用 addToPuzzle 但它应该根据它是 child1 还是 child2 而改变
标签: java stack overriding overloading abstract-class