При создании файла Employee
вы создаете одновременно Person
. Для того, чтобы убедиться, что Person
правильно построен, компилятор добавляет неявный вызов super()
в Employee
конструктору:
class Employee extends Person {
Employee(int id) {
super(); // implicitly added by the compiler.
}
}
Поскольку Person
не имеет конструктор без аргументов это терпит неудачу.
Вы решить либо
добавив явный вызов супер, как это:
class Employee extends Person {
Employee(int id) {
super(id);
}
}
или путем добавления конструктор без аргументов для Person
:
class Person {
Person() {
}
Person(int a) {
}
}
Обычно конструктор no-arg также неявно добавляется компилятором. Как отмечает Binyamin Sharet в комментариях, это относится только к тому, что конструктор вообще не указан. В вашем случае у вас есть указан конструктор Person, поэтому не создается неявный конструктор.
Использование среды IDE, такой как Eclipse, немедленно даст вам подсказку и ярлык для исправления. –