Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

4
  • 2
    In Smalltalk, it is called "protocol". In Objective-C, it is called "protocol". Java is highly influenced by Objective-C, but for some reason they decided to rename it to "interface", and it has been a common source of confusion with the "program to an interface not a n implementation" quote from the GoF ever since (which people somehow strangely assume refers to Java interfaces even though Java didn't exist yet when the book written, and so that cannot possibly be the case). Commented Jul 19, 2016 at 11:48
  • @JörgWMittag I believe in Swift it's called protocol as well. Commented Jul 19, 2016 at 11:56
  • +1 Now that the difference between interfaces and classes has been blurred, this concept is more important than ever. If you are careful about what is public (e.g only methods are public) generating an interface is trivial. Building an interface initially helps with learning if you are green, though. Commented Jul 19, 2016 at 17:16
  • @JörgWMittag Personally, I think the choice of the word Interface is a better word than protocol, as the word protocol is so heavily overloaded to mean too many things. "How one should act", "the messages sent and received on a network", etc. While I get that "protocol" can indicate how one should interact with the class behind it, there's nothing new in how one should act with the protocol vs the class directly, so the name "protocol" seems a bit off. Now if you could add a different "protocol" to the same class, then the name protocol improves. Commented Nov 18, 2023 at 15:45