# 2021-02-02| Swift | Protocols ###### tags: `swift` `gobelins` Equivalent de l'interface en Java ## Protocol simple, class simple ```swift protocol Proto1 { func start() func pause() func stop() } protocol Proto2 { func sayHello() func sayThanks() func sayBye() } class Move: Proto1 { func start() { } func pause() { } func stop() { } } class Speak: Proto2 { func sayHello() { } func sayThanks() { } func sayBye() { } } var moves: [Proto1] = [Move()] for m in moves { m.start() } func haveDiscussion(sentences: Proto2) { sentences.sayHello() } ``` ## Différents Protocols ```swift protocol MonProtocolAvecFonctionStatic { static func b() } protocol P { func a(_ p:Int) -> Int } protocol ProtocolInutile { func fonctionDeProtocolInutile() } ``` ## Class a protocols multiples ```swift class JeSuisUneClasseSansProtocol { } class JeSuisUneClasseRespectantUnProtocol:ProtocolInutile { func fonctionDeProtocolInutile() {} } class JeSuisUneClasseRespectantPlusieursProtocol:ProtocolInutile,P,MonProtocolAvecFonctionStatic { // Fonction provenant de 'ProtocolInutile' func fonctionDeProtocolInutile() {} // Fonction provenant de 'P' func a(_ p: Int) -> Int { return p } static func b() { print("from static") } } let sansProtocol = JeSuisUneClasseSansProtocol() let unProtocol = JeSuisUneClasseRespectantUnProtocol() unProtocol.fonctionDeProtocolInutile() let plusieursProtocol = JeSuisUneClasseRespectantPlusieursProtocol() plusieursProtocol.fonctionDeProtocolInutile() plusieursProtocol.a(3) JeSuisUneClasseRespectantPlusieursProtocol.b() ```