使用 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 构造函数,并确保每个参数的类型匹配。