プロトコル

プロトコルとは、クラスが実装しなければならないプロパティやメソッドを定義するものである。

protocol culcProtocol {
    var getVol: Int { get }
    func plus()
    func minus()
}

// 上記で定義したプロトコルをクラス定義する様に記述する
class culc: culcProtocol {
    
    private var totalVol = 0

    var getVol: Int {
        get {
            return totalVol
        }
    }
    
    func plus() {
        totalVol += 1
        print("1足します")
    }
    
    func minus() {
        totalVol -= 1
        print("1引きます")
    }
    
}

let culcObj = culc()
print("今の値は、\(culcObj.getVol)") // 0

culcObj.plus()
print("今の値は、\(culcObj.getVol)") // 1

culcObj.minus()
print("今の値は、\(culcObj.getVol)") // 0

memo

  • プロトコルで定義したプロパティやメソッドは必ず実装される必要がある。(しないとエラーになる)
  • プロトコル内では定義のみをする。処理自体は継承(採用)されるクラスに記述する。
  • クラスは一つしか継承させることができないが、プロトコル複数継承(採用)させることができる。
  • クラスに処理をベタ書きするより、プロトコルに定義を準備しておくことにより見通しが良くなり、実装漏れも防ぐことができる。