多态的实现原理:
- OC:Runtime
- C++:虚表(虚函数表)
- Swift:纯Swift没有Runtime,更加接近虚表的实现
class Animal {
func speak() {
print("Animal speak")
}
func eat() {
print("Animal eat")
}
func sleep() {
print("Animal sleep")
}
}
class Dog: Animal {
override func speak() {
print("Dog speak")
}
override func eat() {
print("Dog eat")
}
func run() {
print("Dog run")
}
}
var a = Animal()
a.speak() // Animal speak
a.eat() // Animal eat
a.sleep() // Animal sleep
print("******************")
var d = Dog()
d.speak() // Dog speak
d.eat() // Dog eat
d.sleep() // Animal sleep
d.run() // Dog run
上面的代码写法都看得懂,看下下面的写法:
var a = Animal()
a.speak() // Animal speak
a.eat() // Animal eat
a.sleep() // Animal sleep
print("******************")
//多态:父类指针指向子类对象
a = Dog()
a.speak() // Dog speak
a.eat() // Dog eat
a.sleep() // Animal sleep
网友评论