我该如何解决以下情况?
interface I
class A(i: I)
class C : I, A(this) // << --- 'this' is not defined in this context
简而言之,我想将类实例传递给超类构造函数。
在 Kotlin 中是否可能?
P.S. 所有答案都很好且技术上是正确的。但让我们给出一个具体的例子:
interface Pilot {
fun informAboutObstacle()
}
abstract class Car(private val pilot: Pilot) {
fun drive() {
while (true) {
// ....
if (haveObstacleDetected()) {
pilot.informAboutObstacle()
}
// ....
}
}
fun break() {
// stop the car
}
}
class AutopilotCar : Pilot, Car(this) { // For example, Tesla :)
override fun informAboutObstacle() {
break() // stop the car
}
}
这个例子看起来并不是太牵强,那么为什么我不能用面向对象友好的语言来实现它呢?
Translated:这个例子看起来并不是太牵强,那么为什么我不能用面向对象友好的语言来实现它呢?
C
维护一个I
的实例,而不是成为它。或者,你可以允许类A
通过 setter 方法提供其I
,而不是在初始化时提供。 - Craig Otis