Java super()类在构造函数中不起作用,因为构造函数必须是构造函数中的第一条语句,但它是
为什么super()构造函数在此构造函数中不起作用?它一直告诉我它必须是构造函数中的第一条语句,但即使它是第一条语句,它也不起作用 当它是第一个声明时,我也不能使用它,因为在我的程序中,我必须首先检查是否有足够的汽车和汽油,然后才能出售汽车。有什么办法可以解决这个问题吗?我想我必须这样做,我们的教授告诉我们Java super()类在构造函数中不起作用,因为构造函数必须是构造函数中的第一条语句,但它是,java,Java,为什么super()构造函数在此构造函数中不起作用?它一直告诉我它必须是构造函数中的第一条语句,但即使它是第一条语句,它也不起作用 当它是第一个声明时,我也不能使用它,因为在我的程序中,我必须首先检查是否有足够的汽车和汽油,然后才能出售汽车。有什么办法可以解决这个问题吗?我想我必须这样做,我们的教授告诉我们 public class PassengerCarTrader extends CarTrader { public static final int CAPACITY_AUDI
public class PassengerCarTrader extends CarTrader {
public static final int CAPACITY_AUDI = 4;
public static final int CAPACITY_BMW = 4;
public static final int CAPACITY_OPEL = 4;
public static final int CAPACITY_MERCEDES = 3;
public void sellCar(int brand){
super(brand);
Vehicle soldVehicle=null;
switch (brand){
case 1://AUDI
if (this.audiStock>=1 && this.gasStockLiters>=Vehicle.TANK_SIZE_PASSENGER_CAR){
this.audiStock = this.audiStock - 1;
} else {
System.err.println("Nicht genug AUDI oder Benzin vorhanden");
}
break;
case 2://BMW
if(this.bMWStock>=1 && this.gasStockLiters>=Vehicle.TANK_SIZE_TRUCK){
this.bMWStock = this.bMWStock -1;
} else {
System.err.println("Nicht genug BMW oder Benzin vorhanden");
}
break;
case 3://MERCEDES
if (this.mercedesStock>=1 && this.gasStockLiters>=Vehicle.TANK_SIZE_PASSENGER_CAR){
this.mercedesStock = this.mercedesStock - 1;
} else {
System.err.println("Nicht genug Mercedes oder Benzin vorhanden");
}
break;
case 4://OPEL
if(this.opelStock>=1 && this.gasStockLiters>=Vehicle.TANK_SIZE_TRUCK){
this.opelStock = this.opelStock -1;
} else {
System.err.println("Nicht genug Opel oder Benzin vorhanden");
}
break;
default: soldVehicle=null;
break;
}
}
}
这是主课
public abstract class CarTrader {
public static final float CAPACITY_DIESEL_LITERS = 350.f;
public static final float CAPACITY_GAS_LITERS = 180.f;
public static final int CAPACITY_PASSENGER_CARS = 15;
public static final int CAPACITY_TRUCKS = 8;
float gasStockLiters=180.f;
float dieselStockLiters=250.f;
int passengerCarsStock=15;
int trucksStock=5;
int mANStock=4;
int scaniaStock=4;
int audiStock=4;
int bMWStock=4;
int opelStock=4;
int mercedesStock=3;
public Vehicle sellVehicle(byte vehicleType){
Vehicle soldVehicle=null;
switch (vehicleType){
case VehicleType.TRUCK:
trucksStock = trucksStock - 1;
dieselStockLiters = dieselStockLiters - Vehicle.TANK_SIZE_TRUCK;
soldVehicle = new Vehicle(VehicleType.TRUCK);
System.out.println("Fahrzeug(e) erfolgreich verkauft");
break;
case VehicleType.PASSENGER_CAR:
passengerCarsStock = passengerCarsStock - 1;
gasStockLiters = gasStockLiters - Vehicle.TANK_SIZE_PASSENGER_CAR;
soldVehicle = new Vehicle(VehicleType.PASSENGER_CAR);
System.out.println("Fahrzeug(e) erfolgreich verkauft");
break;
}
return soldVehicle;
}
类中没有构造函数。 超级(品牌)。。。。这不是一个超级构造函数调用。。相反,它是一个超级方法调用。
将PassengerCarTrader中的“sellCar(int品牌)”重命名为sellVehicle(字节vehicleType)。。。那么super可能会在您的代码中工作。。。。。pont is…super在您的情况下,只有当父类的方法名与子类的方法名相同时,pont is…super才会起作用,您在子类中调用super时,代码中唯一的
super是super(品牌)代码>在sellCar
方法中。这不是构造函数。对于下一次:请始终包含确切的编译器错误或堆栈跟踪。