gpt4 book ai didi

Java-SCJP 问题

转载 作者:行者123 更新时间:2023-12-01 17:39:01 26 4
gpt4 key购买 nike

考虑:

class Building {
Building() {
System.out.print("b ");
}
Building(String name) {
this();
System.out.print("bn "+name);
}
}
public class House extends Building {
House() {
System.out.print("h ");
}
House(String name) {
this();
System.out.print("hn "+name);
}
public static void main(String a[]) {
new House("x ");
}
}

对于上面的程序,我认为输出一定是h hn x。但输出为 b h hn x。

为什么?

稍后

public class TestDays {

public enum Days {
MON,TUE,WED
};
public static void main(String []args) {

for(Days d : Days.values())
;
Days [] d2=Days.values();
System.out.println(d2[2]);

}

}

我无法理解上面的程序。请帮助我。

class Mammal {

String name="furry";
String makeNoise() {
return "generic noise";
}

}

class Zebra extends Mammal {

String name="stripes";
String makeNoise() {
return "bray";
}

}
public class ZooKeeper {

public static void main(String args[]) {
new ZooKeeper().go();
}
void go() {

Mammal m=new Zebra();
System.out.println(m.name+m.makeNoise());

}

}

在上面的程序中,makeNoise() 被重写。所以输出必须是条纹。但输出是毛茸茸的叫声。

最佳答案

问题 1:

I thought the output must be h hn x. But the output comes as b h hn x.

您忽略了 House() 构造函数隐式调用 Building 的无参数构造函数这一事实。

问题2:

I cant understand the above program. Please help me.

它正在打印枚举的第三个值。空的 for 循环看起来有点奇怪,但我怀疑这只是一个打字错误。如果还有什么你不明白的地方,你就得说出来。 (我把读心 Helm 忘在家里了……乔恩·斯基特睡着了。)

问题3:

In the above program, makeNoise() is overridden. And so output must be stripes bray. But the output is furry bray.

您看到“毛茸茸”而不是“条纹”的原因是类的属性被覆盖。 Zebra 实例实际上有两个名为 name 的字段,您的代码根据引用变量的声明类型绑定(bind)到其中之一。在本例中,m 的声明类型为 Mammal,因此您将获得该名称的哺乳动物版本。

关于Java-SCJP 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3243068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com