В Java конструктор подкласса всегда вызывает один из конструкторов родительского класса. Это необходимо для правильной инициализации класса. Даже когда он находится в подклассе, поля и состояние должны быть настроены, и именно так это делается в Java. Если ни один не указан явно, он вызывает конструктор по умолчанию без аргументов.
оздании Java-программы я столкнулся с проблемой,
Конструктор подкласса выдает ошибку, вызывая метод суперкласса
Код похож на это:
class Manage
{
public static void main(String[] args)
{
Manager m1 = new Manager ( 35 );
}
}
class Employee
{
int emp_id;
public Employee(int id)
{
this.emp_id = id;
}
public int get_id()
{
return emp_id;
}
}
class Manager extends Employee
{
public Manager(int id )
{
this.emp_id = id ;
}
}
class Engineer extends Employee
{
public Engineer(int id)
{
this.emp_id = id ;
}
}
И ошибка примерно такая:
$ javac app.java
app.java:25: cannot find symbol
symbol : constructor Employee()
location: class Employee
{
^
app.java:33: cannot find symbol
symbol : constructor Employee()
location: class Employee
{
^
2 errors
Почему это происходит?