もくじ
どうもこんにちは。iOSをメインに開発しているロッキーカナイです。
本日はSwiftのプロコトルについてまとめてみたいと思います。
Objective-CやJavaなどでインターフェースと呼ばれる機能がSwiftのプロコトルです。
プロトコルとは
プロトコルとは、処理内容は書かず、クラス(構造体)に実装するプロパティとメソッドを定義する機能です。
プロトコルのメリット
プロトコルは「決まりごと」といった意味から分かるように、設計図の仕様を定めた仕様書のようなものとイメージできます。
クラス同士の依存関係をなくして、わかり易いコーディングが可能になります。
プロトコルの適合
プロトコルを適合したクラス(構造体)には必ずプロトコルで定義したプロパティやメソッドを実装する必要があります。クラス(構造体)がプロトコルの実装を行うことをプロトコルの適合と言います。
他に
構造体は継承できませんが、プロトコルの適合は可能です。そして、プロトコルは複数の適合が可能です。
プロパティの宣言にはletが使えませんので定数であってもvarを使います。
プロトコルの書き方
protocol プロトコル名 {
var プロパティ名 : 型 { set get }
func メソッド名(引数名 : 型) -> 戻り値の型
}
プロパティには{ set get }(読み込み、代入可能)や{ get }(読み込み専用)を指定
※{ set }のみの指定不可です。
実際にプロトコルを使ってましょう。
protocol Point {
var startPoint: Int { get set }
var endPoint: Int { get set }
func total() -> Int
}
struct GamePoint: Point {
var startPoint: Int
var endPoint: Int
func total() -> Int {
return startPoint + endPoint
}
}
let point: GamePoint = GamePoint(startPoint: 10, endPoint: 20)
print("point:\(point.total())") // point:30
解説
PointはstartPointとendPointのポイントと合計値を算出するプロトコルです。
GamePoint構造体にPointのプロトコルを適合し、使用しています。
本日はプロトコルについてまとめてみました。