将 Swift 中的协议与 Java 中的接口进行比较
我正在从Apple开发人员页面浏览iOS教程。
在我看来,这几乎具有相同的功能。protocol
interface
两者之间有什么区别吗?
项目中的不同用法?
更新
是的,我确实阅读了上面的链接,我仍然不确定 和 之间的区别和用法是什么。当我问这样的问题时,我希望看到关于这个主题的简单解释。有时可能很难从文档中获取所有内容。protocol
interface
我正在从Apple开发人员页面浏览iOS教程。
在我看来,这几乎具有相同的功能。protocol
interface
两者之间有什么区别吗?
项目中的不同用法?
更新
是的,我确实阅读了上面的链接,我仍然不确定 和 之间的区别和用法是什么。当我问这样的问题时,我希望看到关于这个主题的简单解释。有时可能很难从文档中获取所有内容。protocol
interface
从本质上讲,协议与Java接口非常相似,除了:
protocol<A, B>
Named
Aged
func wishHappyBirthday(to celebrator: Named & Aged) {}
这些是Java开发人员立即明显的差异(或者至少是我迄今为止发现的)。这里有更多信息。
补充@Thomas沙尔的回答。Swift 协议的魔力来自扩展。
让我挠头几个小时的一件事是,并非所有协议都可以用作属性类型。例如,如果你有一个带有typealias的协议,你不能直接将其用作一种属性类型(当你考虑它时,它是有道理的,但是来自Java,我们真的希望拥有一个像userDao:IDao这样的属性)。