Skip to content

Instantly share code, notes, and snippets.

@13hoop
Created December 6, 2018 01:51
Show Gist options
  • Save 13hoop/5d86c79be0e44613248cb5a992091592 to your computer and use it in GitHub Desktop.
Save 13hoop/5d86c79be0e44613248cb5a992091592 to your computer and use it in GitHub Desktop.
协议 的实现效果是可以被延续的,本质上这是一种多态,而不是继承 ,故其不可以被重写,因为override的只能是 父类 的 methord
protocol SoundsFunc {
func voice () -> String
}
class Computer {
var name: String
init(name: String) {
self.name = name;
}
func calculat() {
print("[Computer] 📽")
}
}
extension Computer: SoundsFunc {
func voice() -> String {
return "[Computer] voice 🔊... "
}
}
class Robot: Computer {
override init(name: String) {
super.init(name:name)
}
// 这是错误的 🈲️
// override func voice() -> String {
// super.voice()
// return "[Robot] override Voice"
// }
}
let f_Cpu = Computer(name: "f_Cpu")
f_Cpu.voice()
// 协议的实现效果是可以被延续的,本质上这是一种多态,而不是继承
// 故其不可以被重写,因为override的只能是 父类 的 methord
let s_Rbt = Robot(name: "s_Rbt")
s_Rbt.calculat()
print(s_Rbt.voice())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment