Ошибка в расширении класса

Я работаю над созданием двух классов для своего рода бесполезного проекта класса. Классы - Сотрудник и Доктор, с Доктором, расширяющим Сотрудника. Кажется довольно просто, верно? Я тоже так думал.

Вот мой код для Сотрудника (исключая заголовок):

public class Employee {
    protected String name;

    public Employee(String n) {
        name = n;
    }
}

Вот мой код для Доктора (исключая заголовок):

public class Doctor extends Employee {
    protected String school;

    public Doctor(String n, String s) {
        name = n;
        school = s;
    }
}

Это должно работать, верно? Увы, когда я пытаюсь скомпилировать класс Doctor (класс Employee прекрасно компилируется), BlueJ говорит: "Конструктор Employee в классе Employee не может быть применен к указанным типам; обязательно: java.lang.String found: нет аргументов причина: фактическая и формальная списки аргументов различаются по длине ".

Я знаю, что, возможно, я что-то здесь не так делаю, но понятия не имею, что это такое. Опять же, может быть, я просто использую BlueJ; Я не пробовал компилировать его с какой-либо другой IDE с помощью cmd... пока... Есть идеи, что я делаю неправильно?

1 ответ

Решение

Вам нужно добавить super(n); вашему конструктору Доктора.

В Java конструкторы не связываются автоматически таким образом. Прежде чем перейти к вашему конструктору Doctor, он ищет конструктор без параметров базового класса, если только первый оператор в вашем конструкторе Doctor не является вызовом super().

Другие вопросы по тегам