Java抽象类类型不匹配

时间:2013-10-15 14:29:40

标签: java

我有一个抽象类

public abstract class Car {
     private int carId;

     public Car(int carId) {
         this.carId = carId;
     }

     public int getCarId(c) {
       return carId;
     }

     public void setCarId(int carId) {
        this.carId = carId;
     }
}

public class Jeep extends Car {

   private String jeepModel;

   public Jeep(int carId) {
       super(carId);
   }

   public String getJeepModel() {
       return this.jeepModel;
   }

   public setJeepModel(String jeepModel) {
       this.jeepModel = jeepModel;
   }

}

public class AbstractClassExample {

   public Car car;

   public static void main(String[] args) {
     car = new Jeep(1);
   }
} 

当我这样做时,我收到以下错误:类型不匹配:无法从吉普转换为汽车

我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

我不确定您为什么会收到确切的错误消息,但我发现您的代码中还有其他一些奇怪的内容:

  • Jeep 延伸 Car 时,需要重新声明 carId 字段
  • Jeep 构造函数中,您说this.id = carId但您没有成员字段 id
  • Car 没有您尝试使用的 carId 构造函数

答案 1 :(得分:0)

你使用super(carId),它调用父类构造函数。在抽象类汽车中,你

没有定义构造函数。因此,只有默认构造函数可用[Car(){}]

溶液

(1)在汽车类中创建构造函数

car(int CarId)
{this.CarId=carId;}

(2)或致电super()