当前位置: 首页 > 知识库问答 >
问题:

你能从一个单独的类中调用超类中的一个方法吗?这个类的子类是一个对象?

荀俊迈
2023-03-14

这个子类重写了原始方法,而超类是一个抽象类。是否可以通过初始化为其子类的对象调用超类中的原始方法?

public class SubClass extends SuperClass {
    public void methodA() {
        System.out.println("SubClass: methodA");
    }

    public void methodB(int num) {
        System.out.println("SubClass: methodB " + ++num);
    }
}

public abstract class SuperClass {
    public void methodA() {
        System.out.println("SuperClass: methodA");
    }

    public void methodB(int num) {
        System.out.println("SuperClass: methodB " + num);
    }
}

我想做的是:

{
  public static void main(String args[]){
    SuperClass sup= new SuperClass();
    sup.methodA();
}

我认识到上面的代码无法作为抽象类进行实例化,所以我尝试这样做:

{public static void main(String args[]){
    SuperClass sup= new SubClass();
    sup.methodA(); //Trying to call method in original superclass
}

共有2个答案

秦焱
2023-03-14

不,你不能“从外面”这么做。

这就是多态性的全部目的/思想——调用的确切方法完全取决于调用该方法的对象的类。

换句话说:你必须后退一步,修复你的设计。如果你想调用一个基类方法,那么你需要一个基类对象,而不是一个子类对象!

意思是:没有简单的解决方法。相反,你应该仔细检查你的需求,然后提出一个类层次结构来帮助你实现这些需求。

我同意tsolakp概述的解决方案是有效的——但不要搞错:它只不过是一个修复症状的(肮脏的)创可贴。你最好投入你的时间来解决问题的根本原因,这是一个破碎的面向对象设计。

景英杰
2023-03-14

您总是可以创建一个匿名类来扩展Super,或者创建一个不会覆盖methodA()的子类。以下是前一种方法的示例:

    SuperClass sup= new SuperClass(){};
    sup.methodA();
 类似资料:
  • 我的Java包中有四个类。只有一个类具有方法。 当我运行方法时,我如何运行这四个类中的所有方法? 以下是我的课程: 第一类。JAVA 第二类。爪哇 第三类。JAVA 样品。JAVA

  • 问题内容: 在Bruce Eckel的“ Thinking In Java,第四版”的第428页(有关类型信息的章节)中,具有以下示例: 也许我有点累,但是我看不到add()方法中对add()的调用是如何工作的。我一直认为它应该有一个引用,或者是一个静态方法(并且我在ArrayList或List中找不到静态add())。我想念什么? 我只是为自己测试,发现这可行: 问题答案: Java为这样的方法

  • Java,我们可以从另一个类调用main()方法吗?例如,ClassA应该在命令行上运行,因为它定义了main(String[]args)方法。 我想把这个叫做ClassA,在ClassB里面。是否初始化类的新对象,如 或者是否有一种方法可以在ClassB中传递ClassA的命令行选项。 谢啦

  • 问题内容: 在Python中,有没有一种方法可以从另一个类中调用一个类方法?我正在尝试在Python中旋转自己的MVC框架,但无法弄清楚如何从另一个类的一个类调用方法。 这是我想发生的事情: 我正在从PHP慢慢进入Python,因此我正在寻找与PHP等效的Python 。 问题答案: 更新:刚刚在您的帖子中看到了对它的引用。那不一样。用于获取函数对象,然后使用您的参数调用它 现在是一个实际的函数对

  • 我见过子类的构造器方法被用于具有超类类型的变量。例如: 是类型对象还是类型?由于类inherit from,因此它的方法可能比它的超类多。实例调用这些函数是否只能存在于中,而不能存在于中?在这种情况下,和可以互换吗?例如:

  • 问题内容: 我是python的新手。我试图在类中将值从一种方法传递给另一种方法。我搜索了该问题,但无法获得适当的解决方案。因为在我的代码中,“ if”正在调用类的方法“ on_any_event”,而该方法反过来应该调用我的另一个方法“ dropbox_fn”,该方法利用了“ on_any_event”中的值。如果“dropbox_fn”方法在类之外,它将起作用吗? 我将用代码说明。 这里的主要问