标签: scala protected access-modifiers
存在(我的代码之外)
trait Foo { protected val bar = 0 }
我想要一个FooImpl的课程Foo,并bar公开。
FooImpl
Foo
bar
我听说子类可以提高其继承成员的可见性。
我该怎么做?
我试过
class FooImpl extends Foo { override val logger = super.logger }
但得到了错误:
super may be not be used on value logger
答案 0 :(得分:2)
如果你使logger成为def而不是val。
logger
trait Foo { protected def logger = 0 } class FooImpl extends Foo { override val logger = super.logger }
如果Foo未由您定义,那么在涉及反思的解决方案之外您可能会失败。
请参阅this和this。
答案 1 :(得分:1)
您可以提高方法的可见性。
当您声明具有更广可见度的字段时,您声明新字段。