动态类型和多方法
作者:
盖小聂 | 来源:发表于
2019-06-28 18:11 被阅读0次class ViewController: UIViewController {
func printPet(_ pet: Pet) {
print("Pet")
}
func printPet(_ cat: Cat) {
print("Cat")
}
func printPet(_ doy: Dog) {
print("Dog")
}
func printThem(pet: Pet, _ cat: Cat) {
printPet(pet)
printPet(cat)
}
override func viewDidLoad() {
super.viewDidLoad()
printPet(Pet()) //Pet
printPet(Cat()) //Cat
printPet(Dog()) //Dog
//打印时的Dog()的类型信息并没有被用来在运行时选择合适的printPet(_ dog: Dog)版本的方法,
//而是被忽略掉,并采用了编译期决定的Pet版本的方法。
//因为Swift默认情况下是不采用动态派发的,因此方法的调用只能在编译时决定。
printThem(pet: Dog(), Cat()) //Pet Cat
}
}
本文标题:动态类型和多方法
本文链接:https://www.haomeiwen.com/subject/ozvecctx.html
网友评论