Scala 公之于众

Scala 公之于众,scala,protected,access-modifiers,Scala,Protected,Access Modifiers,存在(我的代码之外) 我想要一个类FooImpl,它扩展Foo,并使bar公开 我听说子类可以提高继承成员的可见性 我该怎么做 我试过了 class FooImpl extends Foo { override val logger = super.logger } 但我得到了一个错误: super may be not be used on value logger 您可以提高方法的可见性 当您以更广的可见性声明字段时,您可以声明新字段如果您将记录器设置为def而不是val,则该功能

存在(我的代码之外)

我想要一个类
FooImpl
,它扩展
Foo
,并使
bar
公开

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

我该怎么做


我试过了

class FooImpl extends Foo {
  override val logger = super.logger
}
但我得到了一个错误:

super may be not be used on value logger

您可以提高方法的可见性


当您以更广的可见性声明字段时,您可以声明新字段

如果您将
记录器
设置为def而不是val,则该功能将正常工作

trait Foo {
    protected def logger = 0
}

class FooImpl extends Foo {
    override val logger = super.logger
}
如果
Foo
不是由您定义的,您可能在涉及反射的解决方案之外运气不佳


请参阅和。

您不能反过来使用
def
吗<代码>覆盖def logger=super.logger?看起来不是这样吗?除非你的意思是让他们两个都去。
trait Foo {
    protected def logger = 0
}

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