Назад к вопросам
Junior
185
questionbank

Как в Dart объявить интерфейс?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В Dart нет явного ключевого слова interface. Интерфейсы неявно объявляются путем определения класса. Любой класс в Dart может служить интерфейсом.

Класс, реализующий интерфейс, должен объявить ключевое слово implements за именем класса и перечислить имена интерфейсов, которые он реализует.

// Интерфейс неявно определен этим классом.
class MyInterface {
  void doSomething() {}
  int getData() {
    return 0;
  }
}

// Класс, реализующий интерфейс.
class Implementer implements MyInterface {
  @override
  void doSomething() {
    // Реализация метода из интерфейса
    print('Выполняю что-то...');
  }

  @override
  int getData() {
    // Реализация метода из интерфейса
    return 42;
  }
}

void main() {
  MyInterface obj = Implementer();
  obj.doSomething();
  print(obj.getData());
}

Если класс реализует несколько интерфейсов, их можно перечислить через запятую:

class AnotherInterface {
  String getName() {
    return '';
  }
}

class MultiImplementer implements MyInterface, AnotherInterface {
  @override
  void doSomething() {
    print('Делаю что-то из MyInterface...');
  }

  @override
  int getData() {
    return 100;
  }

  @override
  String getName() {
    return 'Мультиреализатор';
  }
}

Использование abstract класса также позволяет определить интерфейс, но с возможностью содержать неабстрактные методы и переменные экземпляра. Однако для чистого определения контракта чаще используется обычный класс или даже abstract класс со всеми абстрактными методами.