【发布时间】:2019-05-13 10:50:20
【问题描述】:
我认为输出应该是“cougar cf”,因为调用 Cougar() 应该只打印 cougar,调用 go() 应该为 this.type 打印 'c' 和为 super.type 打印 'f',因为 super 关键字用于调用父类。
谁能验证一下?
class Feline {
public String type = "f ";
public Feline() {
System.out.print("feline ");
}
}
class Cougar extends Feline {
public Cougar() {
System.out.print("cougar ");
}
void go() {
type = "c ";
System.out.print(this.type + super.type);
}
public static void main(String[] args) {
new Cougar().go();
}
}
【问题讨论】:
-
但显示不正确?什么表明它不正确? ...如果您只是在 IDE 中执行它。你会得到结果。
-
你在问什么......
-
我猜这是一些考试/认证的问题,对吗?
-
在这种情况下,只是一个提示:在每个构造函数的第一行中隐式调用了什么?
-
@ManishJoshi 只有一个
type,它在go()的第一行被分配了一个新值。 IE。this.type和super.type指的是同一个字段 - 避免使用公共字段的原因之一是它们会导致这种混乱。
标签: java