protocol ComportementVol{
func vole()
}
class voleAvecDesAiles:ComportementVol{
func vole(){
print (« je vole »)
}
}
class neVolePas:ComportementVol{
func vole(){
print (« je ne vole pas »)
}
}
class Canard{
var comportementVol:ComportementVol?
func afficher(){
print (« je suis un canard »)
}
func vole(){
comportementVol?.vole()
}
}
class ColVert:Canard {
override init(){
super.init()
comportementVol = voleAvecDesAiles()
}
}
class CanardPlastic:Canard{
override init(){
super.init()
comportementVol = neVolePas()
}
}
var canard1:Canard = ColVert()
canard1.afficher()
canard1.vole()
var canard2:Canard = CanardPlastic()
canard2.afficher()
canard2.vole()