Swiftではプロトコル(Javaでいうインターフェース)を定義できる。
Swiftでプロトコルを定義して利用する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
protocol CookMethod { func boil() func melt(material1: String, material2: String) } class Cook: CookMethod { func boil () { print("Boiled!!") } func melt(material1: String, material2: String) { print(material1 + "&" + material2 + " were melted!!") } } let cook = Cook() cook.boil() // "Boiled!!" cook.melt(material1: "Water", material2: "Flour") // "Water&Flour were melted!!" |
こんな感じでプロトコルを定義することによって、何を実装すれば良いかが明確になる。
Swiftでプロトコルを複数定義して利用する
Swiftでも、Javaのインターフェースと同じようにprotocolを複数定義&利用できるよ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
protocol CookMethod { func boil() func melt(material1: String, material2: String) } protocol CookMethod2 { func grill() } class Cook: CookMethod, CookMethod2 { func boil () { print("Boiled!!") } func melt(material1: String, material2: String) { print(material1 + "&" + material2 + " were melted!!") } func grill() { print("Grilled!!") } } let cook = Cook() cook.boil() // "Boiled!!" cook.melt(material1: "Water", material2: "Flour") // "Water&Flour were melted!!" cook.grill() // "Grilled!!" |
クラスの多重継承はできないけど、protocolならOK。
カンマで区切っていけばいくつでもプロトコルを実装できるよ。