无法从构造函数的子类型调用函数

时间:2019-10-16 16:44:40

标签: kotlin

是否可以从构造函数的子类型中调用函数?请看一个例​​子

id

animalType是const(val),因此它始终是DogType。我不明白为什么我不能从DogType类中调用方法。 我尝试覆盖val,但收到了NPE

1 个答案:

答案 0 :(得分:3)

您的属性在动物基类中声明(作为AnimalType)。调用doSomething时,Dog中的构造函数参数不存在。

您可以尝试这样的事情:

abstract class Animal<T: AnimalType>(val animalType: T)

class Dog(animalType: DogType) : Animal<DogType>(animalType) {
    fun doSomething() {
        animalType.runDogTypeFunction()
    }
}