如何在java中引用扩展的子类?

时间:2016-07-07 16:14:56

标签: java inheritance subclass extend super

我目前正在开发一个java项目,老师并不是很擅长解释自己。 目前我一直试图在java中引用扩展类来获得平衡。 (我试图编辑天平,以便可以在数组中显示和更改。

我的主帐户看起来像这样

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

扩展的帐户是

abstract public class Asset {

    String symbol;


    public String getSymbol() {
        return symbol;
    }

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

}

扩展看起来像这样;

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;
    } 
}

现在假设我有一个类Account的测试实例。 我如何编辑班级帐户的现金价值? (主要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一般都很陌生。

1 个答案:

答案 0 :(得分:1)

您为Asset数组命名的方式令人困惑,java区分大小写,因此请将其命名为:

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

您需要通过强制转换获得正确类型的引用,然后才能访问它自己的方法。你可以这样做:

/*** Third Level Menu ***/
.main-menu > li > ul li > ul{
    font-size: 18px;
    color: #fff;
    font-style: italic;
    right: 0;
    margin-top: calc(-29px - 1.55em) /* Negative your list item padding - font size*/
    background:#6689c5 url(images/shadower.png) repeat-x;
    display: none;
    position: absolute;
    left: 100%;
    white-space: nowrap;
}