我的输出会出现:
长度:XX宽度:XX标题:XX价格:XX
我实际获得的输出:
标题:XX价格:XX
为什么程序省略了ClassA的toString?
主要
case 'c':
if(!theList.isEmpty()){
for (int i = 0; i < theList.size(); i++)
System.out.println(theList.elementAt(i).toString());
} else {
System.out.println("The list is empty!");
}
break;
ClassA的toString():
@Override
public String toString(){
StringBuilder result = new StringBuilder();
result.append("Length: ").append(this.getLength()).append('\n');
result.append("Width: ").append(this.getWidth()).append('\n');
return result.toString();
}
ClassB,它扩展了ClassA toString():
@Override
public String toString(){
super.toString();
StringBuilder result = new StringBuilder();
result.append("Title: ").append(this.getTitle()).append('\n');
result.append("Price: ").append(this.getPrice()).append('\n');
return result.toString();
}
答案 0 :(得分:0)
这很简单。您只调用了A的toString
方法,但根本没有使用返回值。
除此之外,我会按如下方式编写toString
方法:
@Override
public String toString() {
return //
"Length: " + getLength() + '\n' + //
"Width: " + getWidth() + '\n';
}
代码更短,更易于阅读,并编译为与当前代码等效的字节码。对于B toString
:
@Override
public String toString() {
return super.toString() + //
"Title: " + getTitle() + '\n' + //
"Price: " + getPrice() + '\n';
}