Kotlin 使用具体类型参数重写函数

Kotlin 使用具体类型参数重写函数,kotlin,Kotlin,嗨,我想知道为什么下面的例子不起作用 abstract class BaseClass { } class ConcretClasOne : BaseCalculator { } class ConcretClasTwo : BaseCalculator { } abstract class BaseRun { abstract fun run(param: BaseClass): Int } class ConcretRun : BaseRun { ove

嗨,我想知道为什么下面的例子不起作用

abstract class BaseClass {

}

class ConcretClasOne : BaseCalculator {


}

class ConcretClasTwo : BaseCalculator {


}

abstract class BaseRun {

    abstract fun run(param: BaseClass): Int
}

class ConcretRun : BaseRun {

    override fun run(param: ConcretClasOne): Int {

        return 0
    }
}
这向我显示一条消息
run不覆盖任何内容

我假设kotlin无法匹配抽象类和具体实现,但是还有什么其他方法可以模拟这种行为,具体类
ConcretRun
中的run方法应该接收一个具体的参数
ConcretClasOne

泛型 使用泛型,可以使基类具有扩展基类的类型,以便run方法可以接受该类型

abstract class BaseClass {

}

class ConcretClasOne: BaseCalculator {


}

class ConcretClasTwo: BaseCalculator {


}

abstract class BaseRun<T: BaseClass> {
    abstract fun run(param: T): Int
}

class ConcretRun: BaseRun<ConcretClasOne> {
    override fun run(param: ConcretClasOne): Int {
        return 0
    }
}
抽象类基类{
}
类ConcretClasOne:BaseCalculator{
}
类ConcretClasTwo:BaseCalculator{
}
抽象类BaseRun{
抽象趣味跑步(参数:T):Int
}
混凝土等级:BaserRun{
覆盖趣味跑步(参数:ConcretClasOne):Int{
返回0
}
}
为什么你的代码不起作用 目前,您正试图用更具体的类型重写一个方法,但由于更一般的基方法可以接受更多的类型,因此更具体的方法无法重写它