【发布时间】:2020-01-28 20:10:47
【问题描述】:
我在处理这个 Java 问题时遇到了问题:
考虑以下类:
public class Computer extends Mineral {
public void b() {
System.out.println("Computer b");
super.b();
}
public void c() {
System.out.println("Computer c");
}
}
public class Mineral extends Vegetable {
public void b() {
System.out.println("Mineral b");
a();
}
}
public class Animal extends Mineral {
public void a() {
System.out.println("Animal a");
}
public void c() {
b();
System.out.println("Animal c");
}
}
public class Vegetable {
public void a() {
System.out.println("Vegetable a");
}
public void b() {
System.out.println("Vegetable b");
}
}
假设定义了以下变量:
Vegetable var1 = new Computer();
Mineral var2 = new Animal();
Vegetable var3 = new Mineral();
Object var4 = new Mineral();
在每条语句产生的输出下方的每一行上注明 显示。如果语句产生多于一行的输出,则表明 用斜线换行,如 a/b/c 以表示三行 输出 a 后跟 b 后跟 c。如果该语句导致 错误,写下错误一词来表明这一点。
为了执行
var1.b()
我对输出感到困惑
通过仔细分析,我们必须注意到,当我们调用矿物的方法b()时:
public void b() {
System.out.println("Mineral b");
a();
}
我们也在调用一个方法
a()
因此,使用类层次图,可以调用方法
Vegetable.a()
【问题讨论】:
-
你好。请不要依赖第三方网站为您的问题提供关键内容。尝试从网站中提取问题并将其包含在 Stack Overflow 上。
-
对不起,我会这样做,但网站禁用了复制粘贴,所以我别无选择。希望这不是问题
-
您能否尝试改写以提出特定问题,帖子似乎没有重点。
-
您也可以使用 IDE 来验证您的逻辑。我认为你应该推断你不理解的 var1.b() 的哪一部分。你可以在你的问题中重新创建你的学校材料中的例子的要点。你的想法都是正确的,所以你需要解释你不明白的地方。
-
顺便说一下
var1.b()的输出是Computer b/Mineral b/Vegetable a。您可以考虑重新表述您的问题。
标签: java class inheritance polymorphism class-hierarchy