关于方法调用的Java多态性的困惑

关于方法调用的Java多态性的困惑,java,class,inheritance,polymorphism,class-hierarchy,Java,Class,Inheritance,Polymorphism,Class Hierarchy,我在这个Java问题上遇到了问题: 考虑以下类别: 假设定义了以下变量: 在每条语句产生的输出下面的每一行上指明 展示。如果语句生成多行输出,则表明 在a/b/c中,该行以斜线分隔,以表示三行 输出a后接b后接c。如果该语句导致 error,写下error这个词来表示这一点 执行 var1.b() 我对输出感到困惑 通过仔细分析,我们必须注意,当我们调用mineral的方法b()时: public void b() { System.out.println("Mineral b

我在这个Java问题上遇到了问题

考虑以下类别:

假设定义了以下变量:

在每条语句产生的输出下面的每一行上指明 展示。如果语句生成多行输出,则表明 在a/b/c中,该行以斜线分隔,以表示三行 输出a后接b后接c。如果该语句导致 error,写下error这个词来表示这一点

执行

var1.b()
我对输出感到困惑

通过仔细分析,我们必须注意,当我们调用mineral的方法b()时:

public void b() {
        System.out.println("Mineral b");
        a();
    }
我们也在调用一个方法

a()
因此,使用类层次结构图,可以调用该方法

Vegetable.a()

蔬菜变量1=新计算机()中
,您有一个类型为
的引用变量,指向类型为
Computer
的对象。如果蔬菜是一种超级计算机,那么作业是有效的

表达式
var1.b()。如果蔬菜类型没有方法
b()
,则表达式将给出编译错误


如果编译通过:在运行时,调用
var1.b()
将调用变量
var1
指向的对象上的
b()
方法(即,类型计算机的实例)
Computer.b()
覆盖
Mineral.b()
,因此该方法将被调用。

嘿。请避免依赖第三方网站为您的问题提供关键内容。尝试从网站中提取问题并将其包含在堆栈溢出中。抱歉,我会这样做,但网站禁用了复制粘贴,因此我别无选择。希望这不是一个问题。如果你试图改写以问一个特定的问题,这篇文章似乎没有重点。你也可以使用IDE来验证你的逻辑。我认为你应该推断你不理解var1.b()的哪一部分。在你的问题中,你可以在你的学校材料中重现这个例子的要点。你的想法都是正确的,所以你需要解释你不明白的地方。顺便说一下,
var1.b()
的输出是
计算机b
/
矿物b
/
植物a
。你可以考虑改写你的问题。
a()
Vegetable.a()