使用java创建子子类

时间:2017-03-31 19:37:51

标签: java subclass

Directed UML

我被指示创建一个具有三个子类[RaceCar,Car和Truck]的类Vehicle,然后将一个子类放入Car中,如UML中所示。

但是当我尝试通过说

来做到这一点
public class HybridCar extends Car

我收到错误。我知道在java中我不能双重继承,所以如何格式化HybridCar构造函数?

这是我的Car课程。

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课程:

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:错误:构造函数Car类中的Car不能   适用于给定类型;超级(制造,型号,engSz,id,年份,颜色); ^   required:String,String,double,String,String,String,double,double   found:String,String,double,String,String,String reason:actual和   形式参数列表的长度1错误 -

1 个答案:

答案 0 :(得分:1)

  

错误:类Car中的构造函数Car不能应用于给定类型;   超级(制造,型号,engSz,id,年份,颜色); ^必填:   String,String,double,String,String,String,double,double found:   String,String,double,String,String,String reason:actual和formal   参数列表长度1错误

如果仔细查看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);

旁注 - 确保您向每个类构造函数传递了正确数量的参数,并确保每个参数的类型匹配。