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

后端 未结 2 1644
一整个雨季
一整个雨季 2020-12-14 06:23

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

相关标签:
2条回答
  • 2020-12-14 06:58

    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.

    0 讨论(0)
  • 2020-12-14 07:15

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

    0 讨论(0)
提交回复
热议问题