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

Перенаправляющий конструктор

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

Синтаксис

ClassName.redirectingName(parameters) : this.targetName(arguments);

Пример

Давайте создадим класс Point с основным конструктором и перенаправляющим именованным конструктором Point.origin, который делегирует создание объекта основному конструктору:

class Point { int x; int y; Point(this.x, this.y); Point.origin() : this(0, 0); } void main() { Point p = Point.origin(); print('${p.x}, ${p.y}'); }

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

"0, 0"

Пример

Перенаправляющий конструктор может принимать параметры и передавать их в целевой конструктор. Давайте создадим конструктор Point.square, который принимает одно значение и передает его дважды в основной конструктор:

class Point { int x; int y; Point(this.x, this.y); Point.square(int value) : this(value, value); } void main() { Point p = Point.square(5); print('${p.x}, ${p.y}'); }

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

"5, 5"

Пример

Также перенаправляющий конструктор может ссылаться на другой именованный конструктор того же класса. Давайте создадим цепочку перенаправлений:

class Point { int x; int y; Point(this.x, this.y); Point.origin() : this(0, 0); Point.copy() : this.origin(); } void main() { Point p = Point.copy(); print('${p.x}, ${p.y}'); }

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

"0, 0"

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

  • конструктор named-constructor,
    который создает именованный конструктор
  • ключевое слово this,
    которое ссылается на текущий объект
  • список инициализации initializer-list,
    который инициализирует поля перед телом конструктора
  • фабричный конструктор factory,
    который может возвращать объект другого класса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить