Что такое определение «интерфейс» в объектно-ориентированном программировании - PullRequest
95 голосов
/ 19 мая 2010

Хорошо, мой друг говорит о том, что означает "интерфейс" в программировании.

Каково лучшее описание «интерфейса».

Для меня интерфейс - это план класса, это лучшее определение?

Ответы [ 16 ]

1 голос
/ 19 мая 2010

Как указано выше, синонимы «контракт» и «протокол» являются подходящими.

Интерфейс содержит методы и свойства, которые вы можете ожидать от класса.

Таким образом, если класс Cheetos Bag реализует интерфейс Chip Bag, вы должны ожидать, что Cheetos Bag будет вести себя точно так же, как и любой другой Chip Bag. (То есть раскрыть метод .attemptToOpenWithoutSpillingEverywhere() и т. Д.)

1 голос
/ 19 мая 2010

По моему мнению, интерфейс имеет более широкое значение, чем тот, который обычно ассоциируется с ним в Java. Я бы определил «интерфейс» как набор доступных операций с некоторыми общими функциями, которые позволяют контролировать / контролировать модуль.

В этом определении я пытаюсь охватить как программные интерфейсы, где клиент - это какой-то модуль, так и человеческие интерфейсы (например, GUI).

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

1 голос
/ 19 мая 2010

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

  • быть уверенным, что все члены интерфейса реализованы в производном классе (даже если его просто выдать исключение)
  • Абстрагирование самого класса от вызывающего (приведение экземпляра класса к интерфейсу и взаимодействие с ним без необходимости знать, что на самом деле представляет собой производный класс)

для получения дополнительной информации см. http://msdn.microsoft.com/en-us/library/ms173156.aspx

1 голос
/ 19 мая 2010

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

Люди обычно описывают это как «контракт» на то, что должно быть доступно в методах класса.

Это абсолютно не план, так как это также определит реализацию. Полное определение класса можно было бы назвать планом.

0 голосов
/ 12 октября 2018

Короче говоря, основная проблема, которую пытается решить интерфейс, - это отделить то, как мы используем что-то от того, как это реализовано. Но вы должны учитывать, что интерфейс не является контрактом . Подробнее здесь .

0 голосов
/ 10 августа 2013

Граница, через которую обмениваются две системы.

Интерфейсы - это то, как некоторые языки OO достигают ad hoc полиморфизма . Специальный полиморфизм - это просто функции с одинаковыми именами, работающие с разными типами.

...