Ошибка «Отсутствует тело метода» при объявлении конструктора в Java

1

Я не знаю почему, но когда я пытаюсь перегрузить конструктор, Netbeans показывает ошибку "Отсутствует тело метода или объявляет абстрактный".. здесь class-->

   public class Car extends Vehicle{

    public String mfname;
    public void setmfname(String b){
   this.mfname=b;
    }
   public Car(String name,int weight,int year,String mfname){
   super (name,weight,year);
   this.mfname=mfname;
    }
   public Car();  // this line has the error 
    }
  • 0
    Как говорится в ошибке, вы должны реализовать этот конструктор или объявить его с помощью абстрактного ключевого слова.
Теги:

2 ответа

3
Лучший ответ

Ну, если вы хотите иметь конструктор без параметров, добавьте к нему тело:

public Car()
{
    ...
}

Если нет, просто удалите public Car(); линия.

  • 0
    удаление public и добавление пустых текстов!
  • 0
    @PrathmeshDeshmukh Нет необходимости удалять public, если только вы не хотите, чтобы этот конструктор был закрытым пакетом.
Показать ещё 1 комментарий
2

Конструкторы не могут быть абстрагированы даже в абстрактных классах.

Сообщение об ошибке немного неоднозначно, поскольку оно "интерпретирует" ваш конструктор Car() как не реализованный метод.

Вам нужно будет предоставить реализацию этому конструктору, даже пустую.

Вы также можете вызвать super() в качестве первой линии в вашей Car() реализации для вызова Vehicle пустого конструктора, если это предусмотрено, или Vehicle конструктора по умолчанию, если нет параметризованного конструктора не объявлен в Vehicle.

Примеры (при условии, что Vehicle не имеет объявленного конструктора или не имеет значения параметра)

public Car() {
    super();
}

... или...

public Car() {
    // TODO
}
  • 0
    Спасибо за вашу помощь, но удаление ключевого слова Public и добавление пустого тела сработало для меня!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню