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
}
}
为什么你的代码不起作用
目前,您正试图用更具体的类型重写一个方法,但由于更一般的基方法可以接受更多的类型,因此更具体的方法无法重写它