2010-05-12 6 views
12

Я смущен о том, какая разница между протоколом и интерфейсом? Кажется, что они делают то же самое?В чем разница между протоколом и интерфейсом в Objective-c?

Это как абстрактное на C#, в котором вы должны его реализовать?

+1

Возможный дубликат [Различия между интерфейсами Java и протоколами Objective-C?] (Http://stackoverflow.com/questions/990360/differences-between-java-interfaces-and-objective-c-protocols) – 2014-02-11 16:34:58

ответ

7

протокол в Objective-C является такой же, как интерфейс в Java, если то, что вы имеете в виду

+0

Это как абстрактный в C#, в котором вы должны его реализовать? – user333639

+0

yup, вроде. Обратите внимание, что существуют различия между абстрактными классами и интерфейсами в C#. Но интерфейс в C# такой же, как интерфейс в Java – SirLenz0rlot

3

Objective-C: .

Java: interface.

В противном случае нет разницы.

8

В Objective C интерфейс эквивалентен объявлению класса C++. И протокол эквивалентен интерфейсу Java.

Редактировать: В Objective C определение класса разделяется на два компонента, называемых интерфейсом и реализацией, что позволяет сжимать файлы заголовков. Это похоже на C++. У Java нет эквивалента, потому что вы реализуете свои функции класса в определении класса. В этом отношении C# похож на Java.

0
In Java - you implement an Interface 
In Swift/Objective C - you conform to a Protocol 

"Program to an Interface, not an Implementation" 
- Design Patterns 1995 
0

Протокол представляет собой группу связанных свойств и методов, которые могут быть реализованы любым классом. Они более гибкие, чем интерфейс обычного класса, поскольку они позволяют повторно использовать единую декларацию API в совершенно несвязанных классах. Это позволяет представлять горизонтальные отношения поверх существующей иерархии классов.

Интерфейс класса объявляет методы и свойства, связанные с этим классом.

Протокол, напротив, используется для объявления методов и свойств, которые не зависят от какого-либо конкретного класса.

Смежные вопросы