Интерфейс (объектно-ориентированное программирование)
В объектно-ориентированном программировании — интерфейса или протокола . тип [а] это тип данных , который действует как абстракция класса — . Он описывает набор сигнатур методов , реализации которых могут предоставляться несколькими классами , которые в остальном не обязательно связаны друг с другом. [1] Говорят, что класс, предоставляющий методы, перечисленные в протоколе, принимает протокол. [2] или реализовать интерфейс. [1]
Если объекты полностью инкапсулированы , то протокол является единственным способом доступа к ним для других объектов. Например, Java в Comparable
интерфейс указывает метод compareTo()
какие реализующие классы должны реализовать. Это означает, что метод сортировки, например, может сортировать коллекцию любых объектов типов, реализующих интерфейс Comparable, без необходимости ничего знать о внутренней природе класса (за исключением того, что два из этих объектов можно сравнить с помощью compareTo()
).
Некоторые языки программирования обеспечивают явную языковую поддержку протоколов ( Ada , C# , D , Dart , Delphi , Go , Java , Logtalk , Object Pascal , Objective-C , OCaml , PHP , Racket , Seed7 , Swift , Python 3.8). В языках, поддерживающих множественное наследование , таких как C++ , интерфейсы реализованы как абстрактные классы .
В языках без явной поддержки протоколы часто все еще присутствуют в виде соглашений. Это известно как утиная типизация . Например, в Python любой класс может реализовать __iter__
метод и использоваться как коллекция . [3]
Классы типов в таких языках, как Haskell , или сигнатуры модулей в ML и OCaml используются для многих целей, для которых используются протоколы. [ нужны разъяснения ]
В Rust интерфейсы называются типажами . [4]
См. также
[ редактировать ]- Концепция (общее программирование)
- Делегирование (программирование)
- Протоколы в Objective-C
- Класс (информатика)
- Инкапсуляция (информатика)
- Публичный интерфейс
- Интерфейс (Java)
- Интерфейс прикладного программирования
- Интерфейс (вычисления)
- Список основных тем информатики
Примечания
[ редактировать ]- ^ Использование этих терминов зависит от языка программирования. Java и языки, производные от него, обычно используют «интерфейс», тогда как «протокол» обычно более популярен в других местах.
Ссылки
[ редактировать ]- ↑ Перейти обратно: Перейти обратно: а б «Интерфейсы — определяют поведение для нескольких типов» . Learn.microsoft.com . Проверено 16 ноября 2022 г.
- ^ Миллер, Би Джей (2015). Сэмс: Научитесь быстроте за 24 часа . Индианаполис, Индиана. п. 263. ИСБН 978-0-672-33724-6 .
Любой тип может использовать протокол, который обеспечит ему дополнительную функциональность для выполнения определенного набора задач.
{{cite book}}
: CS1 maint: отсутствует местоположение издателя ( ссылка ) - ^ «Глоссарий — документация Python 3.11.0» . docs.python.org . Проверено 16 ноября 2022 г.
- ^ «Черты — ссылка на ржавчину» . Январь 2024 года.