Avatar
とある記事に載ってたコードですけど、 @swift-4.2.4 protocol SomeProtocol{ // required method func r() // optional method func o() } extension SomeProtocol { // optional methods func o() { print("o() in SomeProtocol") } func p() { print("p() in SomeProtocol") } } class SomeClass: SomeProtocol { func r() { print("r() in SomeClass") } func o() { print("o() in SomeClass") } func p() { print("p() in SomeClass") } } let sc: SomeClass = SomeClass() sc.r() // 出力 "r() in SomeClass" sc.o() // 出力 "o() in SomeClass" sc.p() // 出力 "p() in SomeClass" let sp: SomeProtocol = sc sp.r() // 出力 "r() in SomeClass" sp.o() // 出力 "o() in SomeClass" sp.p() // 出力 "p() in SomeProtocol"