Абстрактный метод в 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 сделайте абстрактные
методы для получения площади и периметра фигуры.