What is the equivalent for java interfaces or objective c protocols in swift?

 ̄綄美尐妖づ 提交于 2019-12-17 23:24:08

问题


I've been looking in to the new Swift language trying to find what's the equivalent for an interface(in java) or a protocol(in objective-c) in Swift, after surfing on the internet and searching in the book provided by Apple, I still can't seem to find it.

Does any one know what's the name of this component in swift and what's its syntax?


回答1:


Protocols in Swift are very similar to Objc, except you may use them not only on classes, but also on structs and enums.

protocol SomeProtocol {
     var fullName: String { get } // You can require iVars
     class func someTypeMethod() // ...or class methods
}

Conforming to a protocol is a bit different:

class myClass: NSObject, SomeProtocol // Specify protocol(s) after the class type

You can also extend a protocol with a default (overridable) function implementation:

extension SomeProtocol {
      // Provide a default implementation:
      class func someTypeMethod() {
           print("This implementation will be added to objects that adhere to SomeProtocol, at compile time")
           print("...unless the object overrides this default implementation.")
      }
}

Note: default implementations must be added via extension, and not in the protocol definition itself - a protocol is not a concrete object, so it can't actually have method bodies attached. Think of a default implementation as a C-style template; essentially the compiler copies the declaration and pastes it into each object which adheres to the protocol.




回答2:


swift has protocols as well, here is the relevant documentation:



来源:https://stackoverflow.com/questions/24071525/what-is-the-equivalent-for-java-interfaces-or-objective-c-protocols-in-swift

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!