Kotlin覆盖超类型变量

Vojtech

考虑两类:

abstract class ParentRepository {}

class ChildRepository : ParentRepository {}

abstract class ParentClass {
    protected abstract var repository: ParentRepository
}

class ChildClass : ParentClass {
    override var repository: ChildRepository
}

最后一部分不起作用:

override var repository: ChildRepository

它会抱怨:

Type of 'repository' doesn't match the type of the overridden var-property 'protected abstract var repository: ParentRepository

我理解问题所在,但我不明白为什么它不起作用– ChildRepository是ParentRepository的实例,这是我习惯于Java的常识。

浸蘸

您必须声明repository为val。您仍然可以将其覆盖为var:

protected abstract val repository: ParentRepository

override var repository: ChildRepository

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

覆盖超类的实例变量

“x”隐藏超类型“Enum”的成员并需要“覆盖”修饰符 - Kotlin

方法不会覆盖或实现超类型的方法

避免覆盖超类变量。整形或替代

在Kotlin中覆盖超类的属性时,有没有办法声明更特定的泛型类型?

方法不会覆盖或从超类型实现方法-用于覆盖

Kotlin:如何将作为集合的类变量覆盖为子类型的集合

Kotlin使用子类型覆盖乐趣

Kotlin-如何“ lateinit”从接口覆盖的变量?

覆盖具有不同类型的超类属性

Mypy报告覆盖方法不兼容的超类型错误

错误:方法未覆盖或从超类型实现方法

在Kotlin中获取变量的类型

在Kotlin中记录变量的类型

如何使用超类的实例访问子类的覆盖变量

Kotlin类型,子类型和超类型与类,子类和超类

快速引用超类型的子类型声明变量

在Kotlin中,如何从字符串中获取一个类并将其分配给具有超类类型的变量?

Kotlin编译错误:尚未解决的AspectJ超类型

在 Kotlin 中使用星型投影作为超类型

ItemVoidPickaxe 类型的 onItemRightClick(ItemStack, World, EntityPlayer, EnumHand) 方法必须覆盖或实现超类型方法

在超类的初始化中使用变量时,覆盖变量将创建NPE

@Provides与@Named不适用于超类型声明的变量

Kotlin:在子类型中覆盖泛型属性

如何在 kotlin 中覆盖 Java 类属性变量

带有冒号变量的类型安全配置覆盖

在Swift中使用不同类型覆盖超类属性

在Java方法覆盖上不允许超类型的背后是什么原因?

当返回类型为List时,不能覆盖超类中的方法