申し訳ありませんが、私はまだコーディングが新しく、すべての用語がダウンしているとは限りません。うまくいけば、あなたはまだ私の質問を理解するでしょう。私が取得したい出力は次のようになります。しかしJava - 親クラスが子クラスからメソッドを呼び出していますか?
"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()を呼び出すことでなければなりません...以下の私のコードの簡易版を持っていますが、それと同じ背後にあるロジックを保持しました(したがって、ParentクラスからのcalculateCost())、次にChildからcalculateCost()を追加します。 super.toString()内のスーパーは、その中にあるcalculateCost()には適用されません。また
は、私は、このような子クラスにtoString()を書くことによって、それを回避することができます知っている:
@Override
public String toString(){
return "Cost for Parent is: " + super.calculateCost() + "\nCost for Child is: " + calculateCost();
}
が、ポイントは、私は、コードを繰り返したくないということであると私は「そのdをオーバーライドする前のtoString()メソッドに追加します。助けてください、または私に指示してください(私は何のためにグーグルがすべきかわかりません...)ありがとう!
*また、このようにChildクラスにtoString()を記述することで回避することができます。*これが行う方法です。 –
実際はそうです。時々、私たちはいつも私たちが望むものを得ることができません。 –
オーバーライドのポイントは何ですか? –