Несколько типов в Dart
Класс в Dart может иметь только одного родителя через
extends, но любое количество контрактов через
implements. Имена перечисляют через запятую:
class Drawable {
void draw();
}
class Movable {
void move();
}
class Post implements Drawable, Movable {
void draw() {
print("draw");
}
void move() {
print("move");
}
}
Каждый контракт добавляет свой набор обязательных членов. Класс должен реализовать их все, иначе объявление останется неполным.
Если два контракта объявляют метод с одинаковой сигнатурой, в классе достаточно одной реализации. Она одновременно выполняет оба требования.
Сделайте класс Readable с методом
read и класс Writable с методом
write.
Сделайте класс Document, который будет
реализовывать оба контракта: и Readable,
и Writable.
Сделайте класс Figure с методами
area и perimeter.
Сделайте класс Quadrilateral с геттерами
четырех сторон.
Сделайте класс Square, который также
будет реализовывать два контракта: и Figure,
и Quadrilateral.