Menu
Coddy logo textTech

Основы конструкторов

Часть раздела Объектно-ориентированное программирование путешествия по Dart на Coddy — урок 8 из 110.

Конструктор — это специальный метод, который запускается автоматически при создании нового объекта. Он инициализирует переменные экземпляра объекта непосредственно в момент создания.

Вот пример класса с конструктором:

class Dog {
  String name;
  String breed;

  Dog(String name, String breed) {
    this.name = name;
    this.breed = breed;
  }
}

Конструктор имеет то же имя, что и класс. Параметры передаются при создании объекта.

Создавайте объекты, передавая аргументы в конструктор:

Dog rex = Dog('Rex', 'German Shepherd');
Dog buddy = Dog('Buddy', 'Golden Retriever');

Доступ к переменным, установленным конструктором:

print(rex.name);
print(rex.breed);
print(buddy.name);
print(buddy.breed);

Вывод:

Rex
German Shepherd
Buddy
Golden Retriever

Dart также предлагает сокращенный синтаксис конструктора, использующий this.variableName непосредственно в списке параметров:

class Dog {
  String name;
  String breed;

  // Сокращение: автоматически присваивает параметры переменным экземпляра
  Dog(this.name, this.breed);
}

Обе версии дают одинаковый результат. Сокращенная запись — это популярная возможность Dart, которая избавляет от необходимости писать this.name = name вручную.

Вы также можете добавить значения параметров по умолчанию:

class Cat {
  String name;
  int age;

  Cat(this.name, [this.age = 1]); // age по умолчанию равен 1
}

Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // age по умолчанию равен 1

print('${fluffy.name} is ${fluffy.age}');    // Fluffy — 3
print('${whiskers.name} is ${whiskers.age}'); // Whiskers — 1

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

challenge icon

Задание

Легко

Вам предоставлены PHP-файлы (book.dart и driver.dart) для реализации книжной системы.

Ваши задачи:

  • Завершите класс Book в book.dart, добавив конструктор, который инициализирует title, author и pages — используйте сокращенный синтаксис Dart Book(this.title, this.author, this.pages);
  • В driver.dart создайте объект Book для 'Harry Potter' автора 'J.K. Rowling' с 400 страницами

Следуйте комментариям TODO в каждом файле.

Шпаргалка

Конструктор — это специальный метод, который запускается автоматически при создании нового объекта. Он инициализирует переменные экземпляра объекта в момент создания.

Конструктор имеет то же имя, что и класс:

class Dog {
  String name;
  String breed;

  Dog(String name, String breed) {
    this.name = name;
    this.breed = breed;
  }
}

Создавайте объекты, передавая аргументы в конструктор:

Dog rex = Dog('Rex', 'German Shepherd');

Dart предлагает сокращенный синтаксис конструктора, используя this.variableName непосредственно в списке параметров:

class Dog {
  String name;
  String breed;

  Dog(this.name, this.breed);
}

Вы можете добавить значения параметров по умолчанию, используя необязательные позиционные параметры:

class Cat {
  String name;
  int age;

  Cat(this.name, [this.age = 1]); // age по умолчанию равен 1
}

Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // age по умолчанию равен 1

Попробуйте сами

import 'book.dart';

void main() {
  // TODO: Создайте объект Book с:
  // title: 'Harry Potter', author: 'J.K. Rowling', pages: 400
  Book myBook = ?;

  print("'${myBook.title}' by ${myBook.author}, ${myBook.pages} pages");
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование