有人可以向我解释为什么输出是“ DDAC”而不是“ DAC”吗?为什么两次打印“ D”?
class A {
String text = "A";
String getText(){
return text;
}
public static void main(String[] args) {
System.out.println((new B()).getText());
}
}
class B extends A{
B(){
text = getText() + "C";
}
String getText(){
return "D" + super.getText();
}
}
最佳答案
您的代码令人困惑,因为您在同一个名称的不同类中有两个方法。您在构造函数getText()
中调用了B()
,该构造函数正在从B类获取文本。您希望它从A类获取文本。我所做的只是将B类中getText()
的名称更改为getBText()
,并正确调用了这些方法。代码如下所示:
class ScratchPaper {
String text = "A";
String getText(){
return text;
}
public static void main(String[] args) {
System.out.println((new B()).getBText());
}
}
class B extends ScratchPaper {
B(){
text = getText() + "C";
}
String getBText(){
return "D" + super.getText();
}
}
输出是您期望的:
DAC