【发布时间】:2022-01-04 01:19:35
【问题描述】:
我正在创建一个新的类,它是车辆。我期待唯一受保护的变量继承给子类。但是当我尝试使用 IDE 创建构造函数时,它是否也在使用超类私有变量? - 这是私人字符串车辆名称 - 我不清楚这种情况。我不应该使用自动构造函数吗?
public class Vehicle {
protected int capacityOfPassengers;
protected String mapOfRoute;
private String vehicleName;
public Vehicle(int capacityOfPassengers, String mapOfRoute,
String vehicleName) {
this.capacityOfPassengers = capacityOfPassengers;
this.mapOfRoute = mapOfRoute;
this.vehicleName = vehicleName;
}
}
public class LandVehicle extends Vehicle {
private String brand;
private int priceModel;
public LandVehicle(int capacityOfPassengers, String mapOfRoute,
String vehicleName, String brand, int priceModel) {
super(capacityOfPassengers, mapOfRoute, vehicleName);
this.brand = brand;
this.priceModel = priceModel;
}
}
【问题讨论】:
-
您的 IDE 知道在调用来自
Vehicle的构造函数之前无法构造LandVehicle。现在,Vehicle没有无参数构造函数,这意味着LandVehicle必须调用Vehicle中的非默认构造函数。这只有在LandVehicle中创建一个带有超类构造函数的所有参数的构造函数时才有效,它用于调用super(...) -
它也在使用超类私有变量它在哪里使用超类的字段?
标签: java oop inheritance constructor access-specifier