text: 協議是特定面向物件程式語言使用的術語，具有各種特殊含義，在其他語言中可能稱為介面或trait。概述.協議指示著在呼叫者和物件之間的互動鏈，在其他方面都類同於通訊協議。使用術語“協議”的語言包括：Clojure、Elixir、Java 8、、Objective-C、Smalltalk-80、Swift、Python。在這些語言中，協議是離散的物件相互通訊的常用方式。為了進行協作，將這些物件一致認可的方法和值的定義，作為API的一部份。協議/介面描述了：如果物件是完全封裝的，則協議將只描述物件能被其他物件訪問的方式。例如Java中的介面，codice_1介面指定了一個方法codice_2，實現類必須實現它。這意味著比如有一個獨立的排序方法，可以排序實現了這個可比較介面的任何物件，而不用知道關於這個類的內部性質的任何事情。一些程式語言提供對協議/介面的顯式的語言支援：Ada、C#、D、Dart、Delphi、Go、Java、、Object Pascal、Objective-C、PHP、Racket、、Swift。在C++中介面叫做抽象基礎類，並被使用純虛擬函式實現。Perl中的面向物件特徵也支援介面。非面嚮物件語言.儘管Go程式語言一般不被認為是面嚮物件語言，它允許在使用者定義型別上定義方法。Go有“介面”型別，兼容於支援給定方法集合的任何型別。空介面codice_4兼容於所有型別。注意函數語言程式設計和分散式程式語言使用術語協議類似於通訊用法。特別是在這些語言中如下這些被認為是協議的一部份：在語言如Haskell中的型別類被用來幹協議所作的很多事情。
metadata: erhwenkuo/wikipedia-zhtw
metadata: 協議 (面向物件程式設計)
metadata: https://zh.wikipedia.org/wiki?curid=7431897