har*_*sai 2 kotlin kotlin-extension
如何使用super关键字在派生类中调用基类的扩展函数?
我尝试使用super打电话,但是没有用。
open class abc {
open fun aa() {
println("function in abc")
}
}
fun abc.sum() {
println("extension function")
}
class ab: abc() {
override fun aa() {
super.aa()
println("functon in ab")
}
fun sum() {
super.sum()
println("sum function")
}
}
fun main(args: Array < String > ) {
var aa: ab = ab()
aa.aa()
aa.aa()
aa.sum()
}
Run Code Online (Sandbox Code Playgroud)
这是16号数字错误,我无法调用扩展功能。
小智 6
这样可以:
(this as abc).sum()
Run Code Online (Sandbox Code Playgroud)
super 不起作用,因为扩展功能不是派生类中要重写的基类的成员。
当您从类中创建扩展时,它不再是该类的成员。您可以拨打电话,super.aa()因为它是班级成员abc。
为了使用该方法,您必须按以下方式调用它。
open class abc {
open fun aa() {
println("function in abc")
}
}
fun abc.sum() {
println("extension function")
}
class ab: abc() {
override fun aa() {
super.aa()
println("functon in ab")
}
fun sum() {
(this as abc).sum()
println("sum function")
}
}
fun main(args: Array < String > ) {
var aa: ab = ab()
aa.aa()
aa.aa()
aa.sum()
}
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息,请参阅此链接
| 归档时间: |
|
| 查看次数: |
555 次 |
| 最近记录: |