0Pricing
Dart Academy · Урок

Абстрактные классы и методы

Определение того, что должны реализовать подклассы

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

Что означает abstract

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

Объявление абстрактного класса

Добавьте ключевое слово abstract перед class. Так Вы сообщаете Dart, что класс незавершён и должен служить общей базой.

abstract class Shape {
  double area();
}

У абстрактных методов нет тела

Абстрактный метод объявляет имя и сигнатуру, но завершается точкой с запятой, оставляя фактическую работу каждому подклассу.

abstract class Shape {
  double area(); // no body
}

Его нельзя создать

Попытка написать Shape() приводит к ошибке компиляции. Dart отказывается это делать, потому что абстрактный класс незавершён и не содержит полноценной реализации.

var s = Shape(); // error: abstract

Подклассы заполняют пропуски

Подкласс использует extends и обязан предоставить тело для каждого абстрактного метода, превращая схему в пригодную для использования реализацию.

class Circle extends Shape {
  final double r;
  Circle(this.r);
  double area() => 3.14 * r * r;
}

Допустимы и конкретные методы

Абстрактный класс может содержать полностью написанные конкретные методы. Подклассы наследуют их напрямую и реализуют только абстрактные методы.

abstract class Shape {
  double area();
  void describe() => print('Area is ' + area().toString());
}

Поля в абстрактных классах

Абстрактные классы также могут содержать поля и конструкторы. Они выполняются при создании подкласса, поэтому общее состояние хранится в базовом классе.

abstract class Shape {
  final String name;
  Shape(this.name);
}

Компилятор контролирует контракт

Если подкласс не реализует абстрактный метод, Dart сообщает об ошибке ещё до запуска кода. Контракт проверяется автоматически.

class Square extends Shape {} // error: area() missing

Зачем нужны абстрактные классы

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

Абстрактные геттеры

Абстрактными можно оставить не только методы. Геттер без тела работает так же и должен быть определён в подклассах.

abstract class Shape {
  String get label;
}

Хранение абстрактных ссылок

Любой подкласс можно сохранить в переменной, типизированной как abstract-класс. Тип гарантирует наличие поведения, не указывая конкретный класс.

Shape s = Circle(2);
print(s.area());

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

Небольшой вопрос об абстрактных классах.

Повторение

Абстрактные классы — это схемы, от которых наследуются, а не экземпляры которых создают. У абстрактных методов нет тела, а конкретные подклассы обязаны их реализовать. Отличная работа! 🎯

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

Урок «Абстрактные классы и методы» бесплатный?

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

Чему я научусь в уроке «Абстрактные классы и методы»?

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

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

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

Сколько времени занимает урок «Абстрактные классы и методы»?

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

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

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

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

  1. Абстрактные классы и методы
  2. Неявные интерфейсы и implements
  3. Полиморфизм через общие типы
  4. Композиция вместо наследования
← Назад к Dart Academy