gpt4 book ai didi

inheritance - 是否可以在 Kotlin 中扩展单例(对象声明)?

转载 作者:行者123 更新时间:2023-12-02 12:07:21 24 4
gpt4 key购买 nike

我有一个 object declaration ( object A : BaseClass ) 我想创建另一个对象声明 B继承自 A的隐式类。 BaseClass是一个类而不是一个接口(interface)。在 Kotlin 有可能吗?

最佳答案

您可以使用委托(delegate)。请注意,您只能通过接口(interface)进行委托(delegate),因此您需要使用需要委托(delegate)的方法子集创建一个接口(interface)。

interface Iface {
fun doStuff()
}

object BaseObject: Iface {
override fun doStuff() { }
}

class BaseClass: Iface {
override fun doStuff() { }
}

object ExtendedObjectDelegatingToObject: Iface by BaseObject {
fun doSomethingElse() { }
}

object ExtendedObjectDelegatingToClass: Iface by BaseClass() {
fun doSomethingElse() { }
}

class ExtendedClassDelegatingToObject: Iface by BaseObject {
fun doSomethingElse() { }
}

class ExtendedClassDelegatingToClass: Iface by BaseClass() {
fun doSomethingElse() { }
}

fun example() {
BaseObject.doStuff() // can call doStuff from BaseObject
ExtendedObjectDelegatingToObject.doStuff() // can call doStuff from ExtendedObject
ExtendedObjectDelegatingToObject.doSomethingElse() // can also call additional methods on ExtendedObject
}

关于inheritance - 是否可以在 Kotlin 中扩展单例(对象声明)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51436044/

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