Описание тега interface

Интерфейс относится к обозначенной точке взаимодействия с компонентом. Интерфейсы применимы как на аппаратном, так и на программном уровне. --- Это также относится к языковому элементу ʻinterface`, который является единственным исключением из единственного наследования в Java, C# и подобных языках.

Интерфейс является назначенной точкой взаимодействия с компонентом.

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

В программировании чаще всего встречаются:

  • api, которые состоят из символов (типов (и всего, что они могут влечь), функций, констант, переменных, шаблонов, пространств имен и т. д.) и их определенного поведения, которое может включать их собственные полные по Тьюрингу языки.
  • abi, которые определяют сопоставление API-интерфейсов с базовой машиной.
  • протоколы, которые определяют взаимодействие через соединение, сеть и т.п.
  • И многие комбинированные, особенно при прямом взаимодействии с устройством, например для написания драйвера устройства.

В некоторых языках, в основном объектно-ориентированных с одинарным наследованием, interface является ограниченным типом, не содержащим состояния и не создаваемым сам по себе, и может наследовать только от (любого количества) других interfaceс. Класс может реализовать любое количество
interfaces в дополнение к наследованию от одного другого class(в большинстве этих языков используется однокоренная иерархия наследования).
Большинство настаивает на том, чтобы сначала был указан базовый класс, а некоторые позволяют явно реализоватьinterfaces, что делает их недоступными, кроме как через interface-поинтер такого типа.

Реализация interfaceварьируется между языками программирования и средами; например, C# имеет следующее определение ( Интерфейсы (Руководство по программированию на C#));

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

interface IEquatable<T> {
  bool Equals(T obj);
}

Интерфейс может содержать или не содержать или использовать любое количествоinterfaces или их аналог.

Вы можете " программировать интерфейс, а не реализацию ", не используя никакихinterface, а также не могут, но по-прежнему использовать interfaceповсюду.

Тег [interface] должен использоваться вместе с соответствующими тегами [language], где это применимо.