首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kotlin继承问题。看看[Q.]零件

Kotlin继承问题。看看[Q.]零件
EN

Stack Overflow用户
提问于 2020-07-16 19:56:58
回答 1查看 22关注 0票数 0

它怎么能使用super呢?它没有超驰功能。

我了解到,如果我想要将超类拖入较低的类并修改方法,我必须添加覆盖。但那有趣的一口却没有。

看看Q.部分

代码语言:javascript
运行
复制
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)
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-07-16 20:19:15

在调用attack(..)-method时,不需要添加关键字super。打电话给attack(charator, power + 2)就行了。您只需检查Charator类中的攻击方法是否是私有的(在Kotlin中,公有是默认的可见性,所以它会起作用)。

只有当你覆盖了一个函数,并且想要从父类调用被覆盖的方法时,才需要super。但是对于你的bite方法来说就不是这样了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62934171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档