web-dev-qa-db-ja.com

JavaインターフェースまたはswiftのObjective Cプロトコルに相当するものは何ですか?

私は新しいSwift言語を探して、インターネットでサーフィンした後、Swiftのインターフェイス(Java)またはプロトコル(objective-c)に相当するものを見つけようとしています) Appleが提供する本を検索しても、まだ見つけられないようです。

Swiftのこのコンポーネントの名前とその構文は何ですか?

30
Martin Cazares

Swiftのプロトコル は、Objcと非常に似ていますが、クラスだけでなく、構造体と列挙型でも使用できる点が異なります。

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

プロトコルへの準拠は少し異なります。

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

デフォルトの(オーバーライド可能な)関数実装を使用してプロトコルを拡張することもできます。

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.")
      }
}

注:デフォルトの実装は、プロトコル定義自体ではなく、拡張機能を介して追加する必要があります-プロトコルは具体的なオブジェクトではないため、実際にメソッド本体をアタッチすることはできません。デフォルトの実装をCスタイルのテンプレートと考えてください。基本的に、コンパイラは宣言をコピーし、プロトコルに準拠する各オブジェクトに貼り付けます。

46
cdstamper

Swiftにもプロトコルがあります。 here は関連ドキュメントです。

10