我是java的新手并试图创建一个简单的命令行应用程序,但我正在做什么错误,我没有意识到它。这是我的代码
public class Auto1 {
private String make;
private String model;
private int value;
private int soldPrice;
private int year;
private int hp;
public Auto1(String make, String model, int value, int soldPrice, int year, int hp) {
this.make = make;
this.model = model;
this.value = value;
this.soldPrice= soldPrice;
this.year = year;
this.hp = hp;
}
public void setMake(String a) {
make = a;
}
public void setModel(String b) {
model = b;
}
public void setvalue(int c) {
value = c;
}
public void setSoldPrice(int d) {
soldPrice = d;
}
public void setYear(int e) {
year = e;
}
public void setHp(int f) {
hp = f;
}
public String getMake() {
return make;
}
public String getModel() {
return model;
}
public int getValue() {
return value;
}
public int getSoldPrice() {
return soldPrice;
}
public int getYear() {
return year;
}
public void price() {
int price = value - soldPrice;
if(a >=5000) {
System.out.println("You Overpaid");
} else {
System.out.println("Fair Price");
}
}
}
我正在尝试创建一个子类,我将在其中创建此代码
public class Auto extends Auto1{
Auto1 auto;
public auto = ("Audi","R8",162900,200000,2017,610){}
}
然而它不允许我,因为“公共”显然是非法的类型开始,我不知道如何创建一个对象。对不起,如果这听起来很愚蠢,但我对Java很新。
答案 0 :(得分:1)
您的行public auto = ("Audi","R8",162900,200000,2017,610){}
不是有效的Java语法。你的意思是把它放在你的构造函数中吗?您的班级Auto
看起来比Auto1
更具体,即引用Auto1
的特定“类型”。
public Auto()
{
super("Audi","R8",162900,200000,2017,610);
}
答案 1 :(得分:1)
你有一个问题的答案,但你想要做的事情看起来不一定是最好的OO设计。 从它的角度来看,你的Auto1应该扩展你的Auto类(即其他方式),因为它(在理论上)更具体。在这种情况下,取决于您正在做什么,您可能希望将Auto设为抽象类。 如果您的Auto1是带有轮子和引擎的“真正”汽车,而Auto1只是一些模型信息,那么最好不要扩展Auto1,而是在Auto类中使用Auto1类型变量。在这种情况下,确保你真的想让它“可设置”,理论上,一旦创建汽车(自动类型的对象),它不应该改变像make和year这样的属性。