6-3 プロトコル(Protocol)
ポイント:実装を持たないクラス定義を用意するのがプロトコル
プロトコルは、クラス定義から実装部分を取り除いたようなものです。プロパティやメソッドなどの宣言だけが記述できます。これは次のように利用します。
プロトコルの書き方
protocol 名前 {
var プロパティ : 型 { set get }
func メソッド ( 引数 ) -> 返値
......必要なだけ記述......
}
プロトコルの組み込み方
class クラス : プロトコル名 { ...... }
プロトコルを組み込んだクラスでは、プロトコルに用意されているすべてのプロパティやメソッドを実装しなければいけません。このようにプロトコルは、それを組み込んだクラスに特定の機能の実装を義務付けることができます。これにより、指定のプロパティやメソッドの存在を保証することができるので、それらのメソッドがあることを前提にプログラムを作成できるようになります。
イニシャライザもプロトコルに用意することができます。これを組み込んだクラスでは「必須イニシャライザ」となり、必ずそのイニシャライザを実装しなければいけなくなります。ただし、そのほかのイニシャライザを用意することもできますので、インスタンス作成の書き方を強制できるわけではありません。
必須イニシャライザの書き方
required init ( 引数 ) { ...... }
プロトコルは、クラスに限らず、構造体、enumなどにも組み込むことができます。また継承を利用し、既にあるプロトコルを更に拡張したプロトコルを作ることもできます。
継承を使ったプロ
この記事は会員限定です。会員登録をすると続きをお読みいただけます。
ログイン / 新規登録