鱼C论坛

 找回密码
 立即注册
查看: 4391|回复: 5

[已解决]super函数

[复制链接]
发表于 2023-8-3 21:22:23 | 显示全部楼层
根据给出的代码,打印的顺序如下:

FishB
FishD
FishA
FishC
FishE

解释如下:

创建了类 A 和类 B,它们都有一个名为 say 的方法。
类 C 继承自类 A,并重写了 say 方法。在其重写的方法中,通过 super().say() 调用了父类 A 的 say 方法。
类 D 继承自类 B,并重写了 say 方法。在其重写的方法中,先打印 "FishB",然后通过 super().say() 调用了父类 B 的 say 方法。
类 E 继承自类 C 和类 D,并重写了 say 方法。在其重写的方法中,先通过 super().say() 调用了父类 C 的 say 方法,然后打印 "FishE"。
创建了 E 类的实例 e,并调用 e 的 say 方法。
当调用 e.say() 时,首先会执行类 E 的 say 方法。然后,由于类 E 继承自类 C 和类 D,且在类 E 的 say 方法中调用了 super().say(),因此会按照方法解析顺序依次调用类 C 和类 D 的 say 方法。
类 C 的 say 方法中通过 super().say() 调用了类 A 的 say 方法,因此会先执行类 A 的 say 方法,打印 "FishA"。
最后,类 D 的 say 方法中打印 "FishD",而类 E 的 say 方法中打印 "FishE"。
所以,最终的打印顺序是:FishB -> FishD -> FishA -> FishC -> FishE。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-1 21:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表