protocol Sound { func makeSound() }
extension Sound {
func makeSound() {
print("Wow")
}
}
protocol Flyable {
func fly()
}
extension Flyable {
func fly() {
print("✈️")
}
}
class Airplane: Flyable { }
class Pigeon: Sound, Flyable { }
class Penguin: Sound { }
let pigeon = Pigeon()
pigeon.fly() // prints ✈️
pigeon.makeSound() // prints Wow
上面的代码工作正常,但是,我需要打印不同类型的声音(即E.E)。如果我叫plane.fly(),它应该打印出我(“有所不同”)。和企鹅一样
答案 0 :(得分:3)
为飞机课提供editor.ui.view.editable.editableElement.style.height = '300px';
:
fly()
您可以为企鹅班做同样的事情:
class Airplane: Flyable {
func fly() {
print("something different")
}
}
let airBus: Airplane = Airplane()
airBus.fly()
//prints "something different"
您提供的功能是协议的默认实现。如果类型没有覆盖函数,它将采用默认实现。您可以在docs中找到更多信息:
您可以使用协议扩展为该协议的任何方法或计算的属性要求提供默认实现。如果一致类型提供了自己所需的方法或属性的实现,则将使用该实现而不是扩展提供的实现。