它怎么能使用super呢?它没有超驰功能。
我了解到,如果我想要将超类拖入较低的类并修改方法,我必须添加覆盖。但那有趣的一口却没有。
看看Q.部分
open class Charator(var hp: Int, val power: Int) {
fun attack(charator: Charator, power: Int = this.power) {
charator.defense(power)
}
open fun defense(damage: Int) {
hp -= damage
if (hp > 0) println("${javaClass.simpleName}'s hp is $hp ")
else println("die")
}
}
class SuperMonster(hp: Int, power: Int) : Charator(hp, power) {
fun bite(charator: Charator) { **------> Q. HOW CAN USE super EVEN DO NOT HAVE override ?**
super.attack(charator, power + 2)
}
}
发布于 2020-07-16 20:19:15
在调用attack(..)
-method时,不需要添加关键字super
。打电话给attack(charator, power + 2)
就行了。您只需检查Charator
类中的攻击方法是否是私有的(在Kotlin中,公有是默认的可见性,所以它会起作用)。
只有当你覆盖了一个函数,并且想要从父类调用被覆盖的方法时,才需要super
。但是对于你的bite
方法来说就不是这样了。
https://stackoverflow.com/questions/62934171
复制相似问题