gpt4 book ai didi

interface - 使用在父类(super class)中定义的同名 var 覆盖在接口(interface)中定义的 val

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

有一个基地 类( var 需要保持保护):

open class Base(protected var id: Int) {}

有接口(interface)需要使用 :
interface ProviderI {
val id: Int
}

还有一个类继承自 基地 并实现 供应商I 界面。我试图在其中实现接口(interface)的 使用父类(super class) 变量 (具有相同的名称)。
作为一个不工作的例子,我正在尝试做类似的事情(例子不起作用):
class Instance(id: Int): Base(id), ProviderI {
override val id
get() { return super.id }
}

这个想法很简单,但我已经尝试了一切,每次都报告不同的错误。

最佳答案

要覆盖存在于多个父类(super class)型中的成员,Kotlin 要求它是 open所有父类(super class)型 , 这个限制看起来很自然,否则 final成员可以很容易地以这种方式被覆盖。

解决方案是制作 id打开 Base并将其覆盖为 var属性(property):

open class Base(protected open var id: Int)

interface ProviderI {
val id: Int
}

class Instance(id: Int): Base(id), ProviderI {
override var id: Int
get() = super.id
set(value) { super.id = value }
}

关于interface - 使用在父类(super class)中定义的同名 var 覆盖在接口(interface)中定义的 val,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46852973/

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