协议(面向对象的编程)
在面向对象的编程, 一个界面或者协议类型[a]是一个数据类型描述一组方法签名,其实现可能由多个课程否则不一定彼此相关。[1]提供协议中列出的方法的类采纳协议,[2]或者实施接口。[1]
如果对象完全封装然后,该协议是其他对象可以访问它们的唯一方法。例如,在爪哇, 这可比
界面指定方法相比于()
哪些实施类必须实施。这意味着,例如,一种分类方法可以对实现可比接口的任何类型对象进行分类,而无需了解类的内在性质(除了可以通过使用这些对象的两个对象。相比于()
)。
一些编程语言为协议提供明确的语言支持(艾达,C#,d,镖,德尔菲,去,爪哇,logtalk,对象Pascal,Objective-C,OCAML,php,球拍,种子7,迅速)。在支持语言中多元继承, 如C ++,接口被实现为抽像类.
在没有明确支持的语言中,协议通常仍然作为约定。这被称为鸭打字。例如,在Python,任何班级都可以实现__ITER__
方法并用作收藏.[3]
类型类在类似的语言中哈斯克尔,或模块签名ML和OCAML,用于协议用于的许多内容。[需要澄清]
也可以看看
笔记
- ^这些术语的使用因编程语言而异。Java和从其衍生而来的语言倾向于使用“接口”,而“协议”通常在其他地方更受欢迎。
参考
- ^一个b“接口 - 定义多种类型的行为”.Learn.microsoft.com。检索11月16日2022.
- ^Miller,BJ(2015)。萨姆斯在24小时内自学迅速。印第安纳州印第安纳波利斯。p。263。ISBN 978-0-672-33724-6.
任何类型都可以采纳一种协议,以帮助其额外的功能来完成一组特定的任务。
- ^“词汇表 - Python 3.11.0文档”.docs.python.org。检索11月16日2022.