2017-12-08 8 views
-2

スーパークラスと継承したクラスは "answer"という変数を継承しています...私は継承したクラスの変数を変更しますが、私のスーパークラスは動作しません!複数の方法を試して、今私は私の心を失っている!javaは継承クラスからスーパークラスに私の変数を返すことはできません

class RightTriangle{ 
    public double answer; 

    public RightTriangle(){} ; 

    public double getAnswer(){return answer;} 

    public double returnAnswer(){ 
    this.answer = answer; 
    return answer; 
    } 
    public String toString(){ 
    return ("Answer: " + answer); 
    } 

} 

class sideAngle extends RightTriangle{ 
    public double nintyDegree = 90; 
    private double sideA; 
    private double angleB; 
    private double answerUpdate; 

    public sideAngle(double sideA, double angleB){ 
    this.sideA = sideA; 
    this.angleB = angleB; 
    } 

    public void solveEquation(){ 
    angleB = Math.toRadians(angleB); 
    answerUpdate = Math.tan(angleB); 
    answer = sideA * answerUpdate; 
    System.out.println(answer); 
    } 
} 

解決策の計算式のコンストラクタで、私のテストステートメントで正しい数字が表示されます。

ここでも私は私のメインで呼び出し/初期化しました(間違っているとは思わないでください!)。

sideAngle angleSide = new sideAngle(firstNum, secondNum); 
angleSide.solveEquation(); 
RightTriangle getAnswer = new RightTriangle(); 
System.out.println(getAnswer.toString()); <<<<<<<< 

は0を出力します!

+1

これもコンパイルされません。 https://stackoverflow.com/help/mcveと問題を示す入力を提供してください。 – Robert

+0

ええ、本当にすみません、私はここに投稿する前にそれを修正しなければならなかったのですが、忘れてしまったいくつかの重要なものがありました!私はちょうど文字列として答えを見るように、 "答え"を追加しました。それはコンパイルする必要があります、0を取り戻す必要があります。入力が700と55または任意の数値であると言うことができます。スーパークラスでアウト! –

答えて

0

作成した2つのインスタンスgetAnswerangleSideは、全く異なる2つのオブジェクトです。彼らは決して相互作用しません。あなたのケースでは、angleSide答えを計算したが、方法はありません、新しいインスタンスは、getAnswerは知っているでしょう。

代わりにangleSideオブジェクトでtoString()を直接呼び出すと思います。 sideAngleRightTriangleの子であるため、sideAngleのすべてのインスタンスはこのtoString()の実装を知っています。だからangleSide.toString()に電話すると答えが返ってきます。

+0

ありがとうございます!....私は前にプログラムを書いていますが、まったく同じエラーが出てそれを修正しました....しかし、継承されたクラスがスーパークラスのtoStringメソッドにアクセスできることを忘れています。 ..これは誰にとっても教訓にしてください。 –

関連する問題