Java 如果这个变量可以是三个不同类中的一个,我如何声明它?
我创造了三个等级,一个跑车等级,一个马斯莱卡等级和一个汽车等级。在我的代码中,我让用户选择他们想要创建的汽车类别Java 如果这个变量可以是三个不同类中的一个,我如何声明它?,java,class,variables,if-statement,declaration,Java,Class,Variables,If Statement,Declaration,我创造了三个等级,一个跑车等级,一个马斯莱卡等级和一个汽车等级。在我的代码中,我让用户选择他们想要创建的汽车类别 if(carType.equals("A")){ SportsCar car1 = new SportsCar(year,make); } else if(carType.equals("B")){ MuscleCar car1 = new MuscleCar(year,make); } else if(carType.equals("C")){ Car ca
if(carType.equals("A")){
SportsCar car1 = new SportsCar(year,make);
}
else if(carType.equals("B")){
MuscleCar car1 = new MuscleCar(year,make);
}
else if(carType.equals("C")){
Car car1 = new Car(year,make);
}
我制作了一个GUI,以便用户可以与汽车交互,但我不断收到一个错误,说它找不到变量car1
我知道如果只有一个car类,我可以在if语句之前声明car1,但它可以是三个不同类中的一个。如何修复此错误?听起来您需要从基本
Car
类继承其他汽车。然后你可以做car1;if{…}car.accelerate()…
否则,在if语句中需要一个“default”子句,这样无论发生什么情况,car1都会被初始化。听起来像是需要其他车从基本car
类继承。然后你可以做car1;if{…}car.accelerate()…
否则,在if语句中需要一个“default”子句,这样无论发生什么情况,car1都会被初始化。car的作用域不正确。我假设除您引用的Car之外的所有类都是Car的子类。在这种情况下,您需要将car
的声明从if块移到您试图使用它的方法或类中。car的范围不正确。我假设除您引用的Car之外的所有类都是Car的子类。在这种情况下,您需要将car
的声明从if块移到您试图使用它的方法或类中。这些car1变量中的每一个都只在包含它的if块的范围内可见。在输入第一个if块之前,需要将car1变量声明为所有三个选项(我猜是Car)共有的类型;乙二醇
Car car1;
if(carType.equals("A")){
car1 = new SportsCar(year,make);
...
每个car1变量仅在包含它的if块的范围内可见。在输入第一个if块之前,需要将car1变量声明为所有三个选项(我猜是Car)共有的类型;乙二醇
Car car1;
if(carType.equals("A")){
car1 = new SportsCar(year,make);
...
Java中有一个特性就是为了实现这一点。这叫做继承 基本上,您可以使一个类成为另一个类的子类。您可以使用
扩展:
public class SportsCar extends Car {
或
这允许您将任何跑车
或跑车
视为汽车
。因此,您可以在if
语句之外声明变量:
Car car1;
if(carType.equals("A")){
car1 = new SportsCar(year,make);
} // etc.
只需从if
语句中为其赋值:
Car car1;
if(carType.equals("A")){
car1 = new SportsCar(year,make);
} // etc.
唯一的问题是Java编译器会害怕变量car1可能没有初始化。如果carType
不是“A”、“B”或“C”,则实际会发生这种情况。所以闭嘴吧:
Car car1 = null;
在做任何事情之前,请先阅读。Java中有一个功能正是为了实现这一点。这叫做继承
基本上,您可以使一个类成为另一个类的子类。您可以使用扩展:
public class SportsCar extends Car {
或
这允许您将任何跑车
或跑车
视为汽车
。因此,您可以在if
语句之外声明变量:
Car car1;
if(carType.equals("A")){
car1 = new SportsCar(year,make);
} // etc.
只需从if
语句中为其赋值:
Car car1;
if(carType.equals("A")){
car1 = new SportsCar(year,make);
} // etc.
唯一的问题是Java编译器会害怕变量car1可能没有初始化。如果carType
不是“A”、“B”或“C”,则实际会发生这种情况。所以闭嘴吧:
Car car1 = null;
在你做任何事情之前,请先阅读。你是否在你的汽车类中使用了extends
?你是否在汽车类中使用了extends
?这不是因为汽车是可见的,而是变量在该范围内是可见的……是的,措辞如此糟糕,我没有。。UpdateEdit并不是说汽车是可见的,而是变量在这个范围内是可见的…是的,措辞很糟糕,我没有。。更新