1

我有一个抽象类

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);
   }
} 

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

我在这里做错了什么?

4

2 回答 2

3

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

  • Jeep扩展Car时,不需要重新声明carId字段
  • 在您说的Jeepthis.id = carId构造函数中,但您没有成员字段id
  • Car没有您尝试使用的carId构造函数
于 2013-10-15T14:33:20.543 回答
0

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

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

解决方案

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

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

(2) 或调用 super()

于 2013-10-15T14:40:53.423 回答