23

I am confused about what the difference is between a protocol and an interface? They both seem to be doing the same thing?

Is it like abstract in C# in that you are required to implement it?

1

5 Answers 5

20

In Objective C an interface is equivalent to a C++ class declaration. And a protocol is equivalent to a Java interface.

Edit: In Objective C the class definition is separated into two components called the interface and implementation, which allows you to shrink the header files. This is similar to C++. Java doesn't have an equivalent, because you implement your class functions within the class definition. C# is similar to Java in this respect.

18

a protocol in Objective-C is the same as an interface in java, if thats what you mean

2
  • Is it like abstract in C# in that you are required to implement it?
    – user333639
    Commented May 12, 2010 at 11:21
  • yup, sort of. note that there are differences between an abstract classes and interfaces in c#. But an interface in C# is the same as an interface in Java
    – Len
    Commented May 12, 2010 at 11:52
5

Objective-C: protocol.

Java: interface.

Otherwise, no difference.

3

A protocol is a group of related properties and methods that can be implemented by any class. They are more flexible than a normal class interface, since they let you reuse a single API declaration in completely unrelated classes. This makes it possible to represent horizontal relationships on top of an existing class hierarchy.

A class interface declares the methods and properties associated with that class.

A protocol, by contrast, is used to declare methods and properties that are independent of any specific class.

2
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

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.