首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从包含两个不同子类型堆栈中多态调用方法

如何从包含两个不同子类型堆栈中多态调用方法
EN

Stack Overflow用户
提问于 2020-12-05 22:33:05
回答 1查看 41关注 0票数 0

我有4个独立的类UI,Parent,child1和child2。我有一个同时包含child1和child2的父堆栈。我试图在遍历堆栈时调用一个方法,该方法会根据它是child1类型还是child2类型而发生变化。

我曾尝试在parent中创建一个抽象方法,并在child1和child2中覆盖该方法,但它指出method不覆盖或实现来自超类型的方法。

我曾尝试在parent中创建一个公共的空方法,并覆盖每个子实例中的方法,但是当我从UI中的main调用该方法时,它会调用空方法。

我通过查看堆栈中的instanceof找到了一种变通方法,该方法有效,但后来在程序中尝试保存/加载数据时遇到了问题。请看下面的粗略代码和任何问题,让我知道。

代码语言:javascript
运行
复制
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();
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-12-05 22:44:55

父类中的方法是public void addToPuzzle(),而子类有一个接受参数public void addToPuzzle(abc)的不同函数。

当满足以下条件时,子类将覆盖父类的方法:

  • 该方法必须与父类中具有相同的名称。
  • 该方法必须具有与父类中相同的参数。
  • 必须存在IS-A关系(inheritance).
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65158037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档