Nicht, dass jemand tut dies, aber:
$ scala -Yoverride-objects
Welcome to Scala version 2.11.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_11).
Type in expressions to have them evaluated.
Type :help for more information.
scala> trait A { object O } ; trait B extends A { override object O }
defined trait A
defined trait B
scala> trait A { final object O } ; trait B extends A { override object O }
<console>:8: error: overriding object O in trait A;
object O cannot override final member
trait A { final object O } ; trait B extends A { override object O }
^
Möglicherweise manchmal wollen die Menschen es zu tun. (For instance.)
Das ist völlig richtig. Ich brauchte eine Weile, um mich davon zu überzeugen. Für ein bisschen ausführlichere, schmerzhafte Details, siehe die Updates in [diese doppelte Frage] (http://stackoverflow.com/questions/30265070/whats-the-point-of-nonfinal-singleton-objects-in-scala). Siehe auch [diese Frage] (http://stackoverflow.com/questions/17308141/what-are-the-subt-differences-between-val-and-singleton-objects) –