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

extends и implements в Dart

Класс может расширить один родительский класс и при этом реализовать один или несколько контрактов. Сначала пишут extends с базовым классом, затем implements с именами контрактов через запятую:

class Programmer { List<String> getLangs(); void addLang(String lang); } class Employee { String _name; int _salary; Employee(this._name, this._salary); String getName() { return _name; } int getSalary() { return _salary; } }

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

class Developer extends Employee implements Programmer { List<String> _langs = []; Developer(String name, int salary) : super(name, salary); List<String> getLangs() { return _langs; } void addLang(String lang) { _langs.add(lang); } }

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

class Team { List<Programmer> _members = []; void add(Programmer member) { _members.add(member); } }

Тот же прием с полями и методами родителя и контрактом можно записать короче, если базовый класс уже задает нужное поведение:

class Note { String title = ""; } class Printable { void show(); } class Post extends Note implements Printable { void show() { print(title); } }

Сделайте класс Storable, в котором будет метод save.

Сделайте класс Entity. Пусть у класса будет поле title типа String.

Сделайте класс Article, который будет наследовать класс Entity и реализовывать класс Storable.

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