Ошибка в расширении класса - PullRequest
1 голос
/ 15 декабря 2011

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

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

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 Ответ

4 голосов
/ 15 декабря 2011

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

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

...