我认为(如果我正确理解了您的问题)明确声明
member
我会做你想做的事。
interface SomeInterface
class Implementation : SomeInterface
class Test {
val member: SomeInterface = Implementation()
}
更新
:问题更新后,在测试课中澄清
成员
应该是
Implementation
不
SomeInterface
我不认为没有成员变量就可以完成您试图做的事情,正如您在问题中所建议的那样。但是,如果有一个基类定义了
成员
做你想做的事:
interface SomeInterface
class Implementation : SomeInterface
abstract class Super {
abstract val member: SomeInterface
}
class Test : Super() {
override val member = Implementation()
// declared as Implementation, but does correctly implement superclass which wants this to be a SomeInterface.
// In this class, member is of type Implementation.
}
fun test() {
val test1 = Test()
val member1 = test1.member // member1 is an Implementation object
val test2: Super = Test()
val member2 = test2.member // member2 is a SomeInterface object
}
上面显示的是,您可以有一个
在你们班上可以作为
实施
,但在类外作为
. 但前提是,当您在类之外使用它时,您将它作为定义
成员
SomeInterface
.