以下代码在编译和运行时给出的输出为“alpha subsub”。
SubSubAlpha();
构造函数应将“subsub”添加到变量 s
中,这应该是输出。
为什么输出是“alpha subsub”?
class Alpha {
static String s = " ";
protected Alpha() {
s += "alpha ";
}
}
public class SubSubAlpha extends Alpha {
private SubSubAlpha() {
s += "subsub ";
}
public static void main(String[] args) {
new SubSubAlpha();
System.out.println(s);
// This prints as " alpha subsub".
//Shouldn't this one be printed as " subsub"
//Who made the call to Alpha(); ?
}
}
最佳答案
当存在类层次结构时,子类的构造函数(在本例中为 SubSubAlpha
)总是调用(首先)父类(super class)的构造函数,在本例中为 Alpha
.
所以实际上发生的是:
private SubSubAlpha() {
super();
s += "subsub ";
}
因此,这使得:
s += "alpha ";
s += "subsub ";
制作字符串“alpha subsub”
关于java - 使用构造函数创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16940646/