如何在java中引用扩展子类?
我目前正在为java做一个项目,老师不太擅长解释自己。 目前,我一直在尝试引用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
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变量名。