概要
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!