Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Конструкторы и наследование


Автор: ChooseLife 28.6.2006, 14:18
Имеем два класса:

Код

public class Parent {
    
    public Parent(String str){
        
    }

}

public class Child extends Parent{
    
    public Child(String str){
        
    }
}


для класса Child происходит ошибка компиляции

Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor

Почему Java требует описать в родительском классе конструктор по умолчанию? 

Автор: batigoal 28.6.2006, 14:33
Цитата(ChooseLife @  28.6.2006,  15:18 Найти цитируемый пост)
Почему Java требует описать в родительском классе конструктор по умолчанию?  

Конструктор класса класса-потомка, обязательно первым делом должен вызывать конструктор класса-родителя. Если ты не пишешь этот вызов явно, то по умолчанию будет пытаться вызваться конструктор без параметров, которого у тебя нет.
Два возможных варианта действий:
1.
Код

public class Parent {
    public Parent(String str){
    }
}
public class Child extends Parent{
    public Child(String str){
      super(str);
      .....
    }
}


2.
Код

public class Parent {
    public Parent() {
    }
    public Parent(String str){
    }
}
public class Child extends Parent{
    public Child(String str){
    }
}
 

Автор: ChooseLife 28.6.2006, 14:35
Все понятно, спасибо 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)