gpt4 book ai didi

kotlin - kotlin,该函数在基类的init block 中调用

转载 作者:行者123 更新时间:2023-12-02 12:49:57 25 4
gpt4 key购买 nike

具有一个基类和一个从其派生的Child:

open class Base(var data: String) {

init {
doInit()
}
open protected fun doInit() {
data += " in Base doInit()"
}
}

class Child(data: String): Base(data) {

init {
doInit()
}
override fun doInit() {

data += super.doInit() + " in Child doInit()"
}
}

val obj = Child("child")

在Child(“child”)中,将调用Base的init {}。应该从基地的init {}或从 child 的init {}调用哪种 doInit()

最佳答案

如果我们定义这样的类:

open class Base(var data: String) {

init {
doInit()
}

protected open fun doInit() {
data += " in Base doInit()"
println("in Base doInit()")
}
}

class Child(data: String): Base(data) {

override fun doInit() {
data += " in Child doInit()"
println("in Child doInit()")
}
}

并创建一个子对象:
val obj = Child("child")

我们将看到输出:

in Child doInit()



因此,当创建子对象并在被子类覆盖的基类中调用函数时,将调用子函数。这就是 Polymorphism

关于kotlin - kotlin,该函数在基类的init block 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62460891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com