java—如何从两个不同子类型的堆栈中多态调用方法

ncecgwcz  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(307)

我有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();
        }
    }
}
ftf50wuq

ftf50wuq1#

父类中的方法是 public void addToPuzzle() ,而子类有一个不同的函数,它接受一个参数 public void addToPuzzle() .
当满足以下条件时,子类将重写父类的方法:
方法必须与父类中的名称相同。
方法必须与父类中的参数相同。
必须有一个is-a关系(继承)。

相关问题