2013-10-15 4 views
1

У меня есть абстрактный класс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); 
    } 
} 

Когда я делаю это я получаю следующее сообщение об ошибке: Несоответствие типов: невозможно преобразовать из джипа в автомобиль

Что я здесь делаю неправильно?

+3

Если не автомобиль автомобиля быть статичным? – FazoM

+0

Я не вижу, как вы получили эту ошибку, о которой говорите. На самом деле есть другие ошибки, которые вы должны получить. –

+1

Зачем вы устанавливали для обоих классов суперкласс и текущий класс свое поле carId? (и он не будет компилироваться, так как у вас нет поля 'id') –

ответ

3

Я не уверен, почему вы получаете , что точное сообщение об ошибке, но я нахожу несколько других вещей, которые странно в вашем коде:

  • Когда Jeep расширяет автомобиля это делает не необходимости повторно объявить поле carId
  • в Jeep конструктор вы говорите this.id = carId, но вы не имеете поле члена идентификатора
  • автомобили не имеют carId конструктора вы пытаетесь использовать
+0

+1. Nice, Kristiyane :) –

+0

Извините, я вручную набрал все и сделал некоторые ошибки. Я исправил конструктор автомобиля, чтобы отразить мой фактический код. – medium

+1

@medium: В целом, действительно, действительно бессмысленно просить о помощи в синтаксических проблемах, не показывая ваш фактический код - не то, что «отражает» его. Вместо того, чтобы перепечатывать его, скопируйте его. И если это слишком долго, начните удалять несущественные вещи, проверяя, что ваша проблема все еще существует. Есть хороший шанс, что вы обнаружите ошибку сами, когда вы это сделаете, между прочим. –

0

вы будете использовать супер (carId), который называют конструктор родительского класса. В абстрактном классе автомобиля, у

не определен constructor.Therefore, есть только конструктор по умолчанию доступен [Car() {}]

решение

(1) создать конструктор в классе автомобилей

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

(2) или позвоните по телефону супер()

Смежные вопросы