2016-08-18 7 views
-2

私は子クラスでシャドーする必要がある最終的な静的intを持つ親クラスを持っています。親クラスでは、私は子クラスでオーバーライドするメソッド "print"を使用します。このコードを使用すると、printメソッドは親クラスのMINIMUMPRIJSを使用します。私はそれが私の子クラスからMINIMUMPRIJSを使用するようにすることができますか?親クラスの最終変数をどのようにシャドーしますか?

私の仕事の記述では、 "reis"クラスについて書いています: - 価格が少なくとも5ユーロであることを確認してください。このための変数を作成し、このminimumpriceが常に保証されていることを確認してください。
- 1 PARAMTER(宛先)
で1コンストラクタ - クラスについて偶然に(destiantion、価格)と1コンストラクタ


を "vliegtuigreis" - ここではminimumpriceは25ユーロです。必要なことをしなさい。
- ちょうど1のparamater(宛先)
で1コンストラクタ - PARAMATERS(宛先、価格、およびflightnumber)と1コンストラクタ

public abstract class Reis { 
    public final static int MINIMUMPRIJS = 5; 

public void setPrijs(double prijs) { 
     if (prijs >= getMINIMUMPRIJS()) { 
      this.prijs = prijs; 
     }else{ 
      this.prijs = MINIMUMPRIJS; 
     } 
    } 

    public void print(){ 
     System.out.printf("Reis met bestemming %s kost %,.2f euro. %n", bestemming, prijs); 
    } 
} 

public class VliegtuigReis extends Reis { 
    private final static int MINIMUMPRIJS = 25; 

    public void print(){ 
     super.print(); 
     System.out.println("Vluchtnr " + vluchtnummer); 
    } 
} 
+3

あなたはそれをシャドーすることはできません。それは 'static final'の意味です。別の名前をつけなければなりません。 –

+0

私は親の "print"から私のコードをコピーし、それを私の子クラスの "print"に加えなければなりませんか? – wetallday

+2

さて、あなたのコードで実際には 'MINIMUMPRIJS'を参照することはありません。 –

答えて

0

デフォルト値の定数を定義しますが、その後、動的な値を格納するためのフィールドを使用することができます。あなたは親の最低価格を全く「影」にする必要はありません。子供の異なる定数を参照するだけです。

public abstract class Parent { 
    public static final double MIN_PRICE = 5.0; 
    private double price; 

    public Parent() { 
     this(MIN_PRICE); 
    } 

    public Parent(double price) { 
     this.price = Math.max(price, Parent.MIN_PRICE); 
    } 

    public print() { 
     System.out.println("Price is: " + this.price); 
    } 
} 

public class Child extends Parent { 
    private static final double MIN_PRICE = 25.0; 

    public Child() { 
     super(Child.MIN_PRICE); 
    } 

    public Child(double price) { 
     super(Math.max(price, Child.MIN_PRICE)); 
    } 

    public void print() { 
     super.print(); 
     System.out.println("Other stuff"); 
    } 
} 

これを受け取り、残りの要件に展開してください。

+0

これはどのように動作するか見ることができます。しかし私の仕事の記述では、私のコンストラクタが持っていなければならないパラメタを正確に教えてくれるので、他のコンストラクタを使うことはできません。 – wetallday

+0

タスクの説明を質問に追加できますか? –

関連する問題