РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
46 of 723 menu

Ключевое слово super

Ключевое слово super применяется внутри дочернего класса для обращения к методам, свойствам и конструкторам родительского класса. Оно позволяет вызывать переопределённые методы родителя, получать доступ к его полям и передавать аргументы в его конструктор. Чаще всего super используется в конструкторах для инициализации полей, объявленных в базовом классе, а также при переопределении методов, когда нужно дополнить поведение родителя, а не полностью его заменить.

Синтаксис

super.member super.method() super.namedConstructor() super(positionalArgs) super.namedArgs

Пример

Давайте создадим базовый класс Animal и дочерний класс Dog, который через super передаёт аргумент в конструктор родителя:

class Animal { String name; Animal(this.name); void show() { print('Animal: $name'); } } class Dog extends Animal { Dog(String name) : super(name); } void main() { Dog dog = Dog('abcde'); dog.show(); }

Результат выполнения кода:

"Animal: abcde"

Пример

Давайте переопределим метод show в дочернем классе и вызовем через super реализацию родителя:

class Animal { String name; Animal(this.name); void show() { print('Animal: $name'); } } class Dog extends Animal { Dog(String name) : super(name); @override void show() { super.show(); print('Dog: $name'); } } void main() { Dog dog = Dog('abcde'); dog.show(); }

Результат выполнения кода:

"Animal: abcde" "Dog: abcde"

Пример

Давайте обратимся через super к свойству родительского класса внутри дочернего:

class Animal { String name = 'abcde'; } class Dog extends Animal { void show() { print(super.name); } } void main() { Dog dog = Dog(); dog.show(); }

Результат выполнения кода:

"abcde"

Пример

Давайте вызовем через super именованный конструктор родительского класса:

class Animal { String name; int age; Animal(this.name, this.age); Animal.unknown() : name = 'abcde', age = 0; } class Dog extends Animal { Dog() : super.unknown(); } void main() { Dog dog = Dog(); print(dog.name); print(dog.age); }

Результат выполнения кода:

"abcde" 0

Смотрите также

  • ключевое слово this,
    которое ссылается на текущий объект
  • ключевое слово override,
    которое помечает переопределённый метод
  • ключевое слово new,
    которое создаёт экземпляр класса
  • ключевое слово const,
    которое создаёт константное значение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить