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

如何在java中引用扩展子类?,java,inheritance,subclass,extend,super,Java,Inheritance,Subclass,Extend,Super,我目前正在为java做一个项目,老师不太擅长解释自己。 目前,我一直在尝试引用java中的扩展类以获得平衡。(我正在尝试编辑余额,以便它可以在数组中显示和更改 我的主要账户是这样的 public class Account { private String name; private double quantity, price; private double rate; private Asset[] Asset; } 扩展的帐户是 abstract publ

我目前正在为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的测试实例。 如何编辑类别帐户中的现金值?(主参数) 以下是我的其他扩展,仅供参考

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基本上都是新手。

您命名资产数组的方式令人困惑,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);
}
您需要通过强制转换获得正确类型的引用,然后才能访问它自己的方法。您可以执行以下操作,例如:

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

更重要的是,不要这样做。如果你需要知道你的
现金
现金
,那么就把它当作
现金
,而不是一般的
资产
。它需要是一个,教授的要求。然后使用提供的答案,但要知道这是一个糟糕的设计。User.setQuantity(25000.00);System.out.println(User.getQuantity());当我运行这个时,它不会显示任何内容(用户是Account类的实例)。我想知道我是否忘记了线程“main”java.lang.NullPointerException中的某些异常,我一直得到:\@vdefile,那么你忘记了初始化变量。并且总是用小写字母启动java变量名。