継承されたメソッドで値を更新した後継承されたフィールドを使用

user13860:

私はJavaでの継承のまわりで私の頭をラップしていますが、私はエラーを取得しています。私は名前フィールドでスーパークラスを定義しました。私の知る限りでは、サブクラスは、フィールドを継承し、継承されたフィールドは、新しい値を割り当てることができます。私がメインでのgetArea()は、三角形の面積値を印刷することが期待が、私は唯一の0.0が印刷されます。あなたが私を助けることができる願っています。[更新例]

public class Figure{

double base;
double height;
double area;
public Figure(double base, double height){
this.height=height;
this.base=base;
}
public double getArea(){return area};
}


public class Triangle extends Figure(){
public Triangle(double base, double height){
super(base,height);
}
area=0.5 * base * height;
}


public class Main{

public static void main{
Triangle triangle=new Triangle();
System.out.println(triangle.getArea());
}

}
user2222:

ここではいくつかのノートで、動作するはずのコードです

class Figure{

    double base;
    double height;
    double area;
    public Figure(double base, double height){
        this.height=height;
        this.base=base;
    }

    public double getArea(){return area;};
}


 class Triangle  extends Figure{
    public Triangle(double base,double height){
         super(base,height);
         this.area = 0.5*base*height;
    }

 }

public class Main{

    public static void main (String[] args){
        Triangle triangle=new Triangle(12,8);
        System.out.println(triangle.getArea());
    }

}
  1. あなたは一つのファイルにパブリッククラス以上のものを持つことはできません
  2. あなたが明示的にコンストリクターを定義すると、デフォルトの1は、トライアングル三角形=新しいトライアングル()文句を言わないコンパイルして、コンパイラによって生成されることはありません。場合は、あなたが自分でそれを宣言する必要があり、デフォルトのコンストラクタを使用する必要があります。
  3. エントリポイントの主は、あなたのプログラムの最初の実行された機能であるために尊重すべきことを具体的な構文を持っています。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=345352&siteId=1