如何解决Java-在子类中使用super时缺少属性
我正在创建一些飞行对象数组的Java代码,这些对象都具有属性价格(两倍)。我对继承有些陌生,这是我第一次使用super关键字。当我在数组中创建一个子类对象Airplane时,价格功能似乎无法正确通过构造函数。
这是我的FlyingObject构造函数:
公共类FlyingObject {
inputs.id
这是我的飞机制造商:
protected double price;
public FlyingObject()
{
price = 0;
}
public FlyingObject(double aPrice)
{
price = aPrice;
}
当我创建带有参数String,double和int的飞机时,一切都正确地注册了string(品牌)和int(马力),但价格始终为0。我在做什么吗? ?任何帮助将不胜感激。
编辑:发现我做错了。大错。
在我的飞机类中,我已经将price重新定义为一个实例变量,而忘记了它,它覆盖了FlyingObjects的价格。
一旦我取出了这个额外的价格变量,并且只有价格变量来自超类(如预期的那样),一切就可以正常工作。
下次会发布更好的示例(可重现)。干杯
解决方法
我不太确定您遇到的问题是什么。我只是在jshell中尝试过,它似乎运行得很好:
public class FlyingObject {
protected double price;
public FlyingObject() { price = 0; }
public FlyingObject(double aPrice) { price = aPrice; }
}
public class Airplane extends FlyingObject {
int horsepower;
String brand;
public Airplane() {
super();
brand = "Unknown brand";
horsepower = 0;
}
public Airplane(String aBrand,double aPrice,int aHorspower) {
super(aPrice);
brand = aBrand;
horsepower = aHorsepower;
}
}
如果我随后调用Airplane plane = new Airplane("Boeing",500000,800);
,则会得到一个飞机对象,其结果为plane.price
= 500000。
顺便说一句,您可能要考虑(而不是aHorsepower
,aBrand
等)在构造函数中使用horsepower
和brand
,并且然后使用this
关键字,如下所示:
public Airplane(String brand,double price,int horsepower) {
super(price);
this.brand = brand;
this.horsepower = horsepower;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。