JavaとScalaの微妙な違い見つけた。

// Java
class A { public int field = 123; }
class B extends A { private int field = 456; }

// Scala
class A() { val field = 123 }
class B() extends A { private val field = 456 }

Java版はコンパイル通るけどScala版は通らない。
公開フィールドもサブタイピングにおける契約の一部とするとScalaが正しい。