我有一个object declaration(object A : BaseClass
),我想创建另一个对象声明B
,该对象声明继承自A
的隐式类。 BaseClass
是一个类,而不是一个接口。在科特林有可能吗?
答案 0 :(得分:2)
您可以使用委托。请注意,您只能通过接口进行委派,因此您需要创建一个接口,其中包含需要委派的方法的子集。
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
}
答案 1 :(得分:0)
在 Kotlin 上开发时,如果需要单个,则可以使用 object 关键字代替 class < / p>
object SimpleSingleton {
val answer = 42;
fun greet(name: String) = "Hello, $name!"
}
assertEquals(42, SimpleSingleton.answer)
assertEquals("Hello, world!", SimpleSingleton.greet("world"))
但是您不能从单例继承