当前位置: 首页 > 面试题库 >

比较Swift中的协议与Java中的接口

韩豪
2023-03-14
问题内容

我正在阅读Apple开发人员页面上的iOS教程。

在我看来,这protocolinterface几乎具有相同的功能。

  • 两者之间有什么区别吗?

  • 项目中的不同用法?

更新

是的
,我看过上面的链接,我仍然不知道什么区别之间使用protocolinterface。当我问这样的问题时,我希望看到有关该主题的简单说明。有时很难从文档中获取所有内容。


问题答案:

本质上,协议与Java接口非常相似,除了:

  • Swift协议还可以指定必须实现的属性(即字段)
  • Swift协议需要通过使用 mutating 关键字来处理值/引用(因为协议可以由结构和类实现)
  • 您可以随时将协议与protocol <>关键字结合使用。例如,将必须遵守协议A和B的功能参数声明为:

func foo ( var1 : protocol<A, B> ){}

对于Java开发人员而言,这些是立即显而易见的差异(或者至少是到目前为止我发现的差异)。



 类似资料:
  • 问题内容: 好的,这是个大问题。我有一个用ObjC(this)编写的库。在那里,我们有一个已定义的协议。当我尝试在快速文件中使用它时,我经常得到: 类型“ XXX”不符合协议“ XXX” 为简化起见,我组成了一个测试项目-应该将其创建为Swift项目。 然后使用以下协议在内部创建ObjC头文件(我称其为StupidProtocol.h)(请注意,每个名称和值都应与给定的值完全匹配,包括大写/小写)

  • 问题内容: 尝试符合Swift UIViewController子类中的UITableViewDataSource和UITableViewDelegate。 文件说,你应该在符合行后但那通常在超去。另一个不起作用。在超类之后使用逗号分隔的列表也不起作用 编辑: 还必须采用每种协议的所有必需方法,而我最初并未这样做。 问题答案: 您使用逗号: 但是要意识到,超类必须是逗号分隔列表中的第一项。 如果您

  • 问题内容: 在互联网上浏览并搜索Apple提供的书籍后,我一直在寻找新的Swift语言,试图找到Swift中的接口(java)或协议(objective-c)中的等效项。我似乎还是找不到。 有人迅速知道这个组件的名称是什么吗? 问题答案: Swift中的协议与Objc非常相似,除了您不仅可以在类上使用它们,而且还可以在结构和枚举上使用它们。 遵守协议有些不同: 您还可以使用默认(可重写)功能实现扩

  • 协议(Protocols)为方法,属性和其他需求功能提供了蓝图。 它为方法或属性骨架而不是实现。 通过定义类,函数和枚举,可以进一步完成方法和属性的实现。 协议的一致性满足了协议要求的方法或属性。 语法 协议也遵循与类,结构和枚举类似的语法 - 协议在类,结构或枚举类型名称之后声明。 单个和多个协议声明也是可以的。 如果定义了多个协议,则必须用逗号分隔。 当要为超类定义协议时,协议名称应使用逗号跟

  • 协议规定了用来实现某一特定功能所必需的方法和属性。 任意能够满足协议要求的类型被称为遵循(conform)这个协议。 类,结构体或枚举类型都可以遵循协议,并提供具体实现来完成协议定义的方法和功能。 语法 协议的语法格式如下: protocol SomeProtocol { // 协议内容 } 要使类遵循某个协议,需要在类型名称后加上协议名称,中间以冒号:分隔,作为类型定义的一部分。遵循

  • 本文向大家介绍Java中继承thread类与实现Runnable接口的比较,包括了Java中继承thread类与实现Runnable接口的比较的使用技巧和注意事项,需要的朋友参考一下 Java中线程的创建有两种方式:  1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类     在实际应用中,我们经