В обычном случае переопределения метода в классе:
scala> class Foo { def foo : String = "Foo" }
defined class Foo
scala> class Bar extends Foo { override def foo : String = "Bar" }
defined class Bar
scala> val b = new Bar
b: Bar = Bar@1d2bb9f
scala> b.foo
res0: String = Bar
Однако вы спросили, можно ли переопределить объект:
scala> class FooBar {
| object prop extends Foo {
| def foo2 : String = "foo2"
| }
| }
defined class FooBar
scala> val fb = new FooBar
fb: FooBar = FooBar@183d59c
scala> fb.prop.foo
res1: String = Foo
Теперь для переопределения:
scala> fb.prop.foo2
res2: String = foo2
scala> class FooBaz extends FooBar {
| override object prop extends Bar {
| def foo2 : String = "bar2"
| }
| }
<console>:8: error: overriding object prop in class FooBar of type object FooBaz.this.prop;
object prop cannot be used here - classes and objects cannot be overridden
override object prop extends Bar {
^
Это на самом деле не имеет смысла, как вы можете гарантировать, что переопределенное значение также расширит Foo?