Loading AI tools
面向对象编程中的结构类型 来自维基百科,自由的百科全书
協議指示著在調用者和對象之間的交互鏈,在其他方面都類同於通信協議。使用術語「協議」的語言包括:Clojure、Elixir、Java 8、Logtalk、Objective-C[1]、Smalltalk-80、Swift、Python[2]。
在這些語言中,協議是離散的對象相互通信的常用方式。為了進行協作,將這些對象一致認可的方法和值的定義,作為API的一部份。協議/接口描述了:
如果對象是完全封裝的,則協議將只描述對象能被其他對象訪問的方式。例如Java中的接口,Comparable
接口指定了一個方法compareTo()
,實現類必須實現它。這意味著比如有一個獨立的排序方法,可以排序實現了這個可比較接口的任何對象,而不用知道關於這個類的內部性質的任何事情(除了兩個這種對象可以通過compareTo()
方式進行比較之外)。
一些程式語言提供對協議/接口的顯式的語言支持:Ada、C#、D、Dart、Delphi、Go、Java、Logtalk、Object Pascal、Objective-C、PHP、Racket、Seed7、Swift。在C++中接口叫做抽象基礎類,並被使用純虛函數實現。Perl中的物件導向特徵也支持接口。
儘管Go程式語言一般不被認為是物件導向語言,它允許在用戶定義類型上定義方法。Go有「接口」類型,兼容於支持給定方法集合的任何類型(這個類型不需要顯式的實現這個接口)。空接口interface{}
兼容於所有類型。
注意函數式編程和分布式編程語言使用術語協議類似於通信用法(比如允許消息交換的規定強調了交換而非消息)。特別是在這些語言中如下這些被認為是協議的一部份:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.