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
}
}
动态类型和多方法
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 小学语文修改病句的方法 修改病句是小学语文考试中常见的题型,在修改病句之前,我们应该清晰的了解有哪些病句现象,下面...
- 从今天开始,写一下我在刷 LeetCode 时的心得体会,包括自己的思路和别人的优秀思路,欢迎各种监督啊! ...
- 终于放假回国了~然而热到爆炸几乎不能出门,充了B站大会员在家看了花了两天补完「博人传 火影忍者新时代」和「齐木楠雄...