继承val公开

时间:2015-02-11 10:50:17

标签: scala protected access-modifiers

存在(我的代码之外)

trait Foo {
  protected val bar = 0
}

我想要一个FooImpl的课程Foo,并bar公开。

我听说子类可以提高其继承成员的可见性。

我该怎么做?


我试过

class FooImpl extends Foo {
  override val logger = super.logger
}

但得到了错误:

super may be not be used on value logger

2 个答案:

答案 0 :(得分:2)

如果你使logger成为def而不是val。

trait Foo {
    protected def logger = 0
}

class FooImpl extends Foo {
    override val logger = super.logger
}

如果Foo未由您定义,那么在涉及反思的解决方案之外您可能会失败。

请参阅thisthis

答案 1 :(得分:1)

您可以提高方法的可见性。

当您声明具有更广可见度的字段时,您声明新字段