【问题标题】:Can't hide val from supertype constructor无法从超类型构造函数中隐藏 val
【发布时间】:2020-07-21 16:18:42
【问题描述】:

我有一个像这样扩展父类的类:

abstract class BaseClass(val mem: Type)

class MyClass(val mem: Type) : BaseClass(mem)

我已将成员声明为 MyClass 上的构造函数的参数,因为它扩展自 BaseClass 需要传入一些东西,但这不起作用,因为编译器告诉我 mem “隐藏超类型的成员”。我希望这个参数成为BaseClass 的成员,因此使用val。我如何传递来自MyClass 的参数?

【问题讨论】:

    标签: kotlin constructor properties arguments member


    【解决方案1】:

    虽然BaseClass 的构造函数中的参数应该是val,但MyClass 的构造函数中的参数不需要是。这是因为它可以只是构造函数中的一个参数,而不是对象的一部分。因为它被传递给BaseClass,在那里它成为对象的属性,并且根据定义,在MyClass 中可用:

    class MyClass(mem: Type) : BaseClass(mem)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 2011-06-13
      • 1970-01-01
      • 2014-05-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多