抱歉,我对编码还很陌生,可能还没有掌握所有术语。希望您仍然能理解我的问题。我想要得到的输出是:
"Cost for Parent is: 77.77"
"Cost for Child is: 33.33"
但是,我得到了这个:
"Cost for Parent is: 33.33"
"Cost for Child is: 33.33"
谁能理解为什么?我的代码有一个简化版本,但其背后的逻辑保持不变......
public class Parent{
public double calculateCost(){
return 77.77;
}
@Override
public String toString(){
return "Cost for Parent is: " + calculateCost();
}
}
public class Child extends Parent{
@Override
public double calculateCost(){
return 33.33;
}
@Override
public String toString(){
return super.toString() + "\nCost for Child is: " + calculateCost();
}
public static void main(String[] args){
Child child1 = new Child();
System.out.println(child1.toString());
}
}
在我看来,子类中的 toString() 应该从父类中调用 toString() (因此,父类中的calculateCost()),然后使用子类中的calculateCost() 添加到它。我猜测 super.toString() 中的 super 不适用于它包含的calculateCost()。
另外,我知道我可以通过在 Child 类中编写 toString() 来解决这个问题,如下所示:
@Override
public String toString(){
return "Cost for Parent is: " + super.calculateCost() + "\nCost for Child is: " + calculateCost();
}
但重点是我不想重复代码,我宁愿添加到我要覆盖的先前 toString() 方法中。请帮助或指导我(不知道我应该谷歌搜索什么......)谢谢!