Классы и конструкторы

Конструкторы и ключевое слово super

В отличие от полей и методов конструкторы базового класса не наследуются. Если базовый класс явным образом определяет конструктор (конструктор по умолчанию не учитывается), то его необходимо вызвать в классе-наследнике при определении конструктора:

void main (){
     
    Employee bob = Employee("Bob");
    bob.display();
} 
 
class Person{
  
    String name = "";
    Person(this.name);
      
    void display(){
        print("Name: $name");
    }
}
class Employee extends Person{
 
    Employee(String name) : super(name);
}

Здесь базовый класс Person определяет конструктор, который принимает один параметр. В производном классе Employee также определяется конструктор, который вызывает конструктор базового класса, передавая ему значение параметра name. Для обращения к функциональности базового класса из производного применяется ключевое слово super. В частности, вызов super(name) фактически будет представлять обращение к конструктору базового класса Person(name).

Если мы не вызовем конструктор базового класса при определении конструктора в производном классе, то мы столкнемся с ошибкой.

Подобным образом можно переопределять и обращаться к именованным конструкторам базового класса:

Last updated