0Pricing
Dart Academy · Урок

Вызов super и цепочка конструкторов

Обращение к родителю во время создания объекта

«Вызов super и цепочка конструкторов» — бесплатный урок Dart Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.

Порядок создания

При создании подкласса сначала необходимо настроить его родительский класс. Dart гарантирует, что конструктор родителя выполнится до начала тела дочернего класса. 🏗️

Знакомство с super

Ключевое слово super обозначает родительскую часть Вашего объекта. С его помощью из дочернего класса можно обратиться к конструктору, методам и полям родителя.

Неявный super()

Если Вы ничего не напишете, Dart сам вызовет конструктор родителя без аргументов. Именно этот невидимый вызов super() позволяет родителям всегда инициализироваться первыми.

class Animal { Animal() => print('Animal'); }
class Dog extends Animal { Dog(); }

Явный вызов super

Если родителю нужны аргументы, вызовите super(...) в списке инициализации конструктора после двоеточия. Так значения передаются вверх по цепочке.

class Dog extends Animal {
  Dog(String name) : super(name);
}

Где размещается super

Вызов super находится в списке инициализации, а не в теле конструктора. К моменту выполнения тела родитель уже полностью создан.

Dog(String name, this.breed) : super(name);

Параметры super

Современный Dart позволяет передавать аргументы родителю напрямую с помощью super.field. Это избавляет от повторяющегося шаблонного кода в списке параметров.

class Dog extends Animal {
  Dog(super.name);
}

Вызов методов super

Внутри переопределённого метода super.method() запускает исходную версию метода родителя. Так Вы расширяете поведение, а не заменяете его полностью.

@override
void speak() {
  super.speak();
  print('extra');
}

Цепочка вверх по дереву

При наличии нескольких уровней наследования каждый конструктор вызывает конструктор своего родителя. Эта цепочка доходит до вершины, а затем тела классов выполняются обратно вниз до Вашего класса.

Порядок инициализации

Полный порядок таков: сначала список инициализации и super, затем тело родителя и после него тело дочернего класса. Поля готовы к работе с final ещё до выполнения любого тела.

Когда родителю нужны аргументы

Если у родителя нет конструктора по умолчанию, Вы обязаны вызвать super с правильными аргументами. Пропустите этот вызов — и Dart сообщит об ошибке компиляции.

Перенаправление с помощью this

Внутри одного класса конструктор может вызвать другой с помощью this(...). Это цепочка между соседними конструкторами, отличная от обращения вверх через super.

Point.origin() : this(0, 0);

Быстрая проверка

Подумайте, где должен находиться вызов конструктора родителя.

Повторение

Вы вызывали super, чтобы запускать конструкторы и методы родителей, передавали значения с помощью параметров super и перенаправляли вызовы между соседними конструкторами с помощью this. 🔗

Часто задаваемые вопросы

Урок «Вызов super и цепочка конструкторов» бесплатный?

Да — полный текст урока «Вызов super и цепочка конструкторов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.

Чему я научусь в уроке «Вызов super и цепочка конструкторов»?

Обращение к родителю во время создания объекта Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Dart Academy?

Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Вызов super и цепочка конструкторов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Dart Academy?

Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. extends и переопределение методов
  2. Вызов super и цепочка конструкторов
  3. Миксины с ключевым словом with
  4. Ограничения on и порядок миксинов
← Назад к Dart Academy