Укажите fly()
для класса Самолет:
class Airplane: Flyable {
func fly() {
print("something different")
}
}
let airBus: Airplane = Airplane()
airBus.fly()
//prints "something different"
Вы можете сделать то же самое для класса Пингвин:
class Penguin: Sound {
func makeSound() {
print("squawk")
}
}
let ? = Penguin()
?.makeSound()
//prints "squawk"
Предоставляемые вами функции: реализации по умолчанию протокола. Если тип не переопределяет функцию, он примет реализацию по умолчанию. Вы можете найти больше в документах :
Вы можете использовать расширения протокола, чтобы обеспечить реализацию по умолчанию для любого метода или требования вычисляемого свойства этого протокола. Если соответствующий тип обеспечивает собственную реализацию требуемого метода или свойства, эта реализация будет использоваться вместо той, которая предусмотрена расширением.