2016-07-07 3 views
1

私は現在、Java用のプロジェクトに取り組んでいます。教師は自分自身を説明することはあまりよくありません。 現在、私はバランスを取るためにJavaの拡張クラスを参照しようとしています。 (私はそれが配列で表示、変更することができるようにバランスを編集しようとしている。Javaの拡張サブクラスを参照するには?

私のメインアカウントが延長されているアカウントが

abstract public class Asset { 

    String symbol; 


    public String getSymbol() { 
     return symbol; 
    } 

    protected Asset(String symbol) { 
     this.symbol = symbol; 
    } 

} 
あるこの

public class Account { 
    private String name; 
    private double quantity, price; 
    private double rate; 
    private Asset[] Asset; 
} 

のように見えます

拡張子はとても似て、

public class Cash extends Asset { 

    private double Quantity; 


    public Cash(double Quantity, String symbol) { 
     super(symbol); 
     this.Quantity = Quantity; 
    } 


    @Override 
    public String getSymbol() { 
     return super.getSymbol(); //To change body of generated methods, choose Tools | Templates. 
    } 

    public double getQuantity() { 
     return Quantity; 
    } 

    public void setQuantity(double Quantity) { 
     this.Quantity = Quantity; 
    } 
} 

は今、私はクラスACCOの作成したテスト・インスタンスを持って言うことができますunt。 クラスアカウントから現金の値を編集するにはどうすればよいですか? (メインarg) 私は参照のためだけに持っている他の拡張です。

public class Stock extends Asset { 

    private String name; 
    private double quantity, rate; 


    public Stock(String name, double quantity, double rate, String symbol) { 
     super(symbol); 
     this.name = name; 
     this.quantity = quantity; 
     this.rate = rate; 
    } 



    @Override 
    public String getSymbol() { 
     return super.getSymbol(); //To change body of generated methods, choose Tools | Templates. 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public double getQuantity() { 
     return quantity; 
    } 

    public void setQuantity(double quantity) { 
     this.quantity = quantity; 
    } 

    public double getRate() { 
     return rate; 
    } 

    public void setRate(double rate) { 
     this.rate = rate; 
    } 
} 

拡張クラスの値を変更する方法 私は

Asset[0] = new Cash(25000.00,string); 

を試みたが、それは手動で値を置くことでのみ便利です。 間違いがあれば謝罪します。私は一般的にコーディングとJavaに新しいです。

+0

さらに基本的に、しないでください。あなたの「現金」が「現金」であることを知る必要がある場合は、それを一般的な「資産」ではなく「現金」として扱います。 – chrylis

+0

教授からの要件は1つである必要があります。 – vdefile

+0

次に、提供された回答を使用しますが、これは悪い設計であることに注意してください。 – chrylis

答えて

1

あなたの資産配列が混乱しているという名前の仕方、Javaは大文字と小文字が区別されるので、例えばそれに名前を付ける:

private Asset[] asset; 

あなたはそれ自身のメソッドにアクセスすることができます前に、鋳造によって適切な型のリファレンスを取得する必要があります。例:

if (asset[0] instanceof Cash) { 
    Cash cash = (Cash)asset[0]; 
    // Then you can access the setQuantity method 
    cash.setQuantity(25000.00); 
} 
+0

ありがとうございました!!!私はこの恐ろしい問題を解決する方法が不思議でした! – vdefile

+0

@vdefile、私の喜び! – alainlompo

+0

User.setQuantity(25000.00); System.out.println(User.getQuantity());私がこれを実行すると、何も表示されません(ユーザーはAccountクラスのインスタンスです)。私が何かを忘れてしまったのだろうかと疑問に思っていた – vdefile

関連する問題