Avatar
omochimetaru 9/25/2018 6:53 AM
@swift-4.2.4 protocol AnimalProtocol { func a() func c() } extension AnimalProtocol { func a() { print("AnimalProtocol.a") } func b() { print("AnimalProtocol.b") } func c() { print("AnimalProtocol.c") } } class Animal : AnimalProtocol { func a() { print("Animal.a") } func b() { print("Animal.b") } } class Cat : Animal { override func a() { print("Cat.a") } override func b() { print("Cat.b") } func c() { print("Cat.c") } } func invokeA<X: AnimalProtocol>(_ x: X) { x.a() } func invokeB<X: AnimalProtocol>(_ x: X) { x.b() } func invokeC<X: AnimalProtocol>(_ x: X) { x.c() } var cat1: Cat = Cat() invokeA(cat1) invokeB(cat1) invokeC(cat1)