协议与接口的区别

9
我一直在阅读Swift文档,并在Playground中进行实践。我必须承认,我对Objective-C/iOS开发一无所知(至少不包括Xamarin)。在我看来,Protocol似乎与C#的接口完全相同。
然而,我注意到在网上搜索时,Objective-C有协议的概念(来源)和接口的概念(虽然我不太确定它们之间的区别)。Swift似乎没有两者 - 只有Protocols。
可以有人解释一下,在Swift中,Protocol和C#接口之间的区别/关系是什么吗?
更新:我理解答案可能与已列出的重复问题功能相同,但我认为,鉴于这是询问一个“不同语言”的问题,该问题仍然具有自己的价值。毕竟,对Swift的新开发人员可能没有Java的知识(除了JavaScript,我没有任何知识)。期望某人具有完全不同的语言系统的知识才能回答他们的问题是有点过分的,不是吗!?这个关于meta的讨论也在讨论这个问题。

我意识到这是关于Java接口而不是C#接口,但差异非常小(Java-8接口),应该是相同的。 - Jeroen Vannevel
有点晚了,但这个可能更合适:http://stackoverflow.com/questions/3824663/whats-the-difference-between-an-c-sharp-interface-and-an-objective-c-protocol?rq=1 - Jeroen Vannevel
关于您的更新,Java和JavaScript是完全不同的东西。它们有不同的起源、不同的范式、不同的特性,并在不同的环境中运行。“Java就像火腿,JavaScript就像仓鼠。” - Chris
1
@Chris 确实,我主要是想表明我对Java的了解是不存在的,所以知道我可以用C#来替代它是不可能的。 - Obsidian Phoenix
1
我完全同意问题中添加的“更新”。我发现自己处于类似的情况。 - Lombas
1个回答

9

Objective C 协议的作用与 Java/C# 中的接口基本相同。Objective C 接口文件有所不同。与 C 语言一样,Objective C 拥有接口文件,公开声明类的方法和属性,然后在实现文件中实现这些方法和属性。例如,您可能会拥有一个类的接口文件,看起来像这样:

@interface  
-(void)myMethod;
@end

接着在你的实现文件中,你需要实现该方法:

-(void)myMethod{
    //code
}

Swift取消了独立的接口和实现文件,因此它只有协议。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接