使用 java 创建子子类
Creating a sub subclass with java
我被指示创建一个 class 具有三个子classes [RaceCar、Car 和 Truck] 的车辆,然后将子class 放入 Car,如中所示UML.
但是当我尝试通过说
来做到这一点时
public class HybridCar extends Car
我收到一个错误。我知道在 java 中我不能双重继承,那么我该如何格式化 HybridCar 构造函数?
这是我的 Car
class.
public class Car extends Vehicle{
double luggageCap;
double passengerCap;
public Car(String make, String model, double engSz, String id, String year, String color, double lugCap, double passCap){
super(make, model, engSz, id, year, color);
luggageCap = lugCap;
passengerCap = passCap;
}
public double getLuggageCap(){
return luggageCap;
}
public double getPassengerCap(){
return passengerCap;
}
public String toString(){
return super.toString()+", "+luggageCap+", "+passengerCap;
}
}
这是我的 HybridCar
class:
public class HybridCar extends Car{
double luggageCap;
double passengerCap;
double batteryCap;
public HybridCar(String make, String model, double engSz, String id, String year, String color, double lugCap, double passCap, double batCap){
super(make, model, engSz, id, year, color);
luggageCap = lugCap;
passengerCap = passCap;
batteryCap = batCap;
}
public String toString(){
return super.toString()+", "+luggageCap+", "+passengerCap+", "+batteryCap;
}
}
这是错误日志:
HybridCar.java:9: error: constructor Car in class Car cannot be
applied to given types; super(make, model, engSz, id, year, color); ^
required: String,String,double,String,String,String,double,double
found: String,String,double,String,String,String reason: actual and
formal argument lists differ in length 1 error –
error: constructor Car in class Car cannot be applied to given types;
super(make, model, engSz, id, year, color); ^ required:
String,String,double,String,String,String,double,double found:
String,String,double,String,String,String reason: actual and formal
argument lists differ in length 1 error
如果你仔细查看 Car
构造函数,你会发现有 8 个特定类型的参数:
Car(String make, String model, double engSz, String id, String year, String color, double lugCap, double passCap)
但是,您只传递了 6 个参数:
super(make, model, engSz, id, year, color);
问题似乎是您没有将必需的参数传递给 Car
构造函数。
将您的 HybribCar
构造函数更改为:
super(make, model, engSz, id, year, color,lugCap, passCap);
旁注 - 确保将正确数量的参数传递给每个 class 构造函数,并确保每个参数的类型匹配。
我被指示创建一个 class 具有三个子classes [RaceCar、Car 和 Truck] 的车辆,然后将子class 放入 Car,如中所示UML.
但是当我尝试通过说
来做到这一点时public class HybridCar extends Car
我收到一个错误。我知道在 java 中我不能双重继承,那么我该如何格式化 HybridCar 构造函数?
这是我的 Car
class.
public class Car extends Vehicle{
double luggageCap;
double passengerCap;
public Car(String make, String model, double engSz, String id, String year, String color, double lugCap, double passCap){
super(make, model, engSz, id, year, color);
luggageCap = lugCap;
passengerCap = passCap;
}
public double getLuggageCap(){
return luggageCap;
}
public double getPassengerCap(){
return passengerCap;
}
public String toString(){
return super.toString()+", "+luggageCap+", "+passengerCap;
}
}
这是我的 HybridCar
class:
public class HybridCar extends Car{
double luggageCap;
double passengerCap;
double batteryCap;
public HybridCar(String make, String model, double engSz, String id, String year, String color, double lugCap, double passCap, double batCap){
super(make, model, engSz, id, year, color);
luggageCap = lugCap;
passengerCap = passCap;
batteryCap = batCap;
}
public String toString(){
return super.toString()+", "+luggageCap+", "+passengerCap+", "+batteryCap;
}
}
这是错误日志:
HybridCar.java:9: error: constructor Car in class Car cannot be applied to given types; super(make, model, engSz, id, year, color); ^ required: String,String,double,String,String,String,double,double found: String,String,double,String,String,String reason: actual and formal argument lists differ in length 1 error –
error: constructor Car in class Car cannot be applied to given types; super(make, model, engSz, id, year, color); ^ required: String,String,double,String,String,String,double,double found: String,String,double,String,String,String reason: actual and formal argument lists differ in length 1 error
如果你仔细查看 Car
构造函数,你会发现有 8 个特定类型的参数:
Car(String make, String model, double engSz, String id, String year, String color, double lugCap, double passCap)
但是,您只传递了 6 个参数:
super(make, model, engSz, id, year, color);
问题似乎是您没有将必需的参数传递给 Car
构造函数。
将您的 HybribCar
构造函数更改为:
super(make, model, engSz, id, year, color,lugCap, passCap);
旁注 - 确保将正确数量的参数传递给每个 class 构造函数,并确保每个参数的类型匹配。