Ошибка в расширении класса
Я работаю над созданием двух классов для своего рода бесполезного проекта класса. Классы - Сотрудник и Доктор, с Доктором, расширяющим Сотрудника. Кажется довольно просто, верно? Я тоже так думал.
Вот мой код для Сотрудника (исключая заголовок):
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().