是否可以从构造函数的子类型中调用函数?请看一个例子
id
animalType是const(val),因此它始终是DogType。我不明白为什么我不能从DogType类中调用方法。 我尝试覆盖val,但收到了NPE
答案 0 :(得分:3)
您的属性在动物基类中声明(作为AnimalType)。调用doSomething时,Dog中的构造函数参数不存在。
您可以尝试这样的事情:
abstract class Animal<T: AnimalType>(val animalType: T)
class Dog(animalType: DogType) : Animal<DogType>(animalType) {
fun doSomething() {
animalType.runDogTypeFunction()
}
}