Ключевое слово super
Ключевое слово super используется внутри класса для обращения
к его родительскому классу. С его помощью можно вызывать конструктор
родителя, обращаться к его методам и свойствам. Это особенно важно,
когда дочерний класс переопределяет поведение родителя, но при этом
хочет использовать его реализацию. В первом случае super
применяется с круглыми скобками для вызова конструктора, во втором -
через точку для доступа к методу или свойству.
Синтаксис
super(args); // вызов конструктора родителя
super.method(); // вызов метода родителя
super.property; // доступ к свойству родителя
Пример
Давайте создадим родительский класс Animal и дочерний класс
Dog, который через super вызывает конструктор родителя:
class Animal
{
String name;
Animal(this.name);
}
class Dog extends Animal
{
Dog(String name) : super(name);
}
void main()
{
Dog dog = Dog('abcde');
print(dog.name);
}
Результат выполнения кода:
"abcde"
Пример
Давайте переопределим метод в дочернем классе и через super
вызовем реализацию родителя:
class Animal
{
String speak()
{
return '...';
}
}
class Dog extends Animal
{
@override
String speak()
{
return super.speak() + ' woof';
}
}
void main()
{
Dog dog = Dog();
print(dog.speak());
}
Результат выполнения кода:
"... woof"
Пример
Давайте получим доступ к свойству родительского класса через
super внутри переопределённого геттера:
class Animal
{
String type = 'abcde';
}
class Dog extends Animal
{
String get parentType
{
return super.type;
}
}
void main()
{
Dog dog = Dog();
print(dog.parentType);
}
Результат выполнения кода:
"abcde"
Смотрите также
-
ключевое слово
this,
которое ссылается на текущий объект -
ключевое слово
extends,
которое наследует класс от родителя -
ключевое слово
implements,
которое реализует интерфейс класса -
ключевое слово
with,
которое подключает миксины к классу