Created
December 6, 2018 01:51
-
-
Save 13hoop/5d86c79be0e44613248cb5a992091592 to your computer and use it in GitHub Desktop.
协议 的实现效果是可以被延续的,本质上这是一种多态,而不是继承 ,故其不可以被重写,因为override的只能是 父类 的 methord
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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