Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtOpAbAM 46 of 113 menu
◀ ▶

Абстрактный метод в Dart

В абстрактном классе можно объявить абстрактный метод - без тела, только с сигнатурой. Такой метод задает контракт: каждый конкретный потомок обязан дать свою реализацию с аннотацией @override.

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

abstract class Post { String title = ""; int likes = 0; String getTitle() => title; void setTitle(String title) { this.title = title; } abstract void increaseRevenue(int value); }

Родитель не знает, что именно увеличивать у потомка - лайки у Note или зарплату у Employee. Поэтому реализацию пишут в наследниках. Пока хотя бы один потомок не переопределит абстрактный метод, класс-потомок остается абстрактным или код не компилируется.

Реализация в классе Employee:

class Employee extends Post { int salary = 0; int getSalary() => salary; void setSalary(int salary) { this.salary = salary; } @override void increaseRevenue(int value) { salary += value; } }

Тот же метод в Note увеличивает число лайков:

class Note extends Post { @override void increaseRevenue(int value) { likes += value; } }

Проверка работы на объекте сотрудника:

var employee = Employee(); employee.setTitle("note"); employee.setSalary(1000); employee.increaseRevenue(100); print(employee.getSalary());

Добавьте в ваш класс Post такой же абстрактный метод increaseRevenue. Напишите реализацию этого метода в классах Employee и Note.

В классе Figure сделайте абстрактные методы для получения площади и периметра фигуры.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить