[Swift]プロトコルについて初心者向けに使い方を解説
Swiftのプロトコルについて初心者向けに使い方、書き方を紹介していきます。
Swiftのプロトコルとは?
プロトコルとは、プロパティやメソッドなどを設定するものです。
クラスを設計書とするならば、プロトコルは仕様書という感じでしょうか。ちなみに直訳すると「規約」という意味です。
プロパティやメソッドを設定すると言っても、具体的な処理を記述するというわけではありません。
2015年のWWDCでAppleがSwiftは世界で初めてのプロトコル指向言語だと発表し注目もされました。
オブジェクト指向プログラミングは聞いたことがあると思いますが、プロトコル指向言語はあまり聞きなれないのではないでしょうか?
プロトコルを書いてみる
さっそくプロトコルについて書いてみます。
前回、クラスの書き方の部分でも紹介しましたがAnimalクラスというものをプロトコルで定義してみましょう。
前回の記事ではAnimalクラスを定義し、そこからサブクラスのDogクラスやCatクラスを定義しました。
protocol Animal { var name: String {get} func bark() -> String }
非常に簡単です。クラスと違いプロトコルではルールを記述するだけなので、処理まで書かないので非常にシンプルになります。
protocol プロトコル名{}の記述となります。なお、プロトコル名の部分は先頭が大文字になります。
この中ではnameプロパティと関数のルールを記述しています。
それでは次にこのプロトコルを元にして、クラスを書いていきます。
protocol Animal { var name: String {get} func bark() -> String } class Dog : Animal { let name: String func bark() -> String { return "bow!" } init(name: String) { self.name = name } }
クラスの継承と同じような感じですね。 class クラス名 : プロトコル名{}の記述となります。
複数のプロトコルは継承できる
Swiftでは複数クラスの継承はできません。多重継承が認められていないわけですね。
しかし、プロトコルでは多重継承が可能です。
Swiftとはじめとして単一継承しかできない場合、元となるスーパークラスが肥大化する傾向にあります。
その解決策として注目されるようになったのが、プロトコル指向というわけです。