Найти тему
proger ЧАЙНИК

Интерфейсы в Dart

Сегодня мы поговорим об интерфейсах в языке программирования Dart. И, возможно, как вы уже поняли, речь пойдет не о пользовательских интерфейсах, а об синтаксической структуре в объектно-ориентированном программирование.

Что же это такое? Интерфейс – это описание действий, которые объект может выполнять. Например, скажем, у нас есть класс автомобилей, класс скутеров и класс грузовиков. Каждый из этих трех классов должен иметь действие start_engine(). То, как запускается двигатель может отличаться от класса к классу, но факт в том, что класс должен иметь действие start_engine(). И это как раз область применения интерфейса.

Синтаксис объявления интерфейса в Dart

Как вы видите, интерфейс выглядит как любой другой обычный класс в Dart. Использование интерфейса происходит при помощи ключевого слова implements. В отличии от наследования, исполнять можно множество интерфейсов. Просто перечисляя через запятую, например:

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

Результат исполнения функции main() { .... }.
Результат исполнения функции main() { .... }.

Итак, выше мы объявили интерфейс InterfaceEngine. В нем мы создали метод start_engine(), который, по сути, ничего не делает. Он всего лишь интерфейс. Затем объявили классы, которые уже исполняют InterfaceEngine. В них то и переопределяется start_engine(), который уже что-то умеет делать, при том он может от класса к классу отличаться. Automobile() печатает "Automobile engine started", а Scooter() уже "Scooter engine started" и тд.

VSCode автоматически предлагает сделать переопределение метода интерфейса
VSCode автоматически предлагает сделать переопределение метода интерфейса

Также использование интерфейсов реализует один из принципов ООП – полиморфизм. Полиморфизм позволяет семейству объектов придерживаться одного интерфейса, позволяя при этом различные реализации. Вспоминаете start_engine()? Метод один, а реализуется по-разному.

Выводы:

  • Dart не имеет специального синтаксиса для объявления интерфейсов.
  • В Dart любой класс может выступать в качестве интерфейса. Классы могут использовать ключевое слово implements для использования любого класса в качестве интерфейса.
  • Когда какой-либо класс реализует интерфейс, он должен переопределить каждый метод и переменную экземпляра интерфейса.
  • При помощи интерфейсов можно реализовать принцип ООП - полиморфизм.

А на этом всё. Спасибо за внимание!

Вам может быть интересно: