概要
Javaではクラス内に同じ名前のフィールドとメソッドをそれぞれ定義できるが、
Scalaではフィールドとメソッドを統一的に扱っており、同じ名前では定義できない。
その理由は、引数なしのメソッドをvalでオーバーライドできるようにするため。
コード
scala> abstract class X {
| def contents:String = "contents from X"
| }
defined class X
scala> class Y extends X {
| override val contents:String = "contents!"
| }
defined class Y
scala> val y = new Y
y: Y = Y@44ce4013
scala> y.contents
res0: String = contents!
