前回からだいぶ間がありますが、引き続いて写経していきます。
5. Classes
今回は、クラス定義ですね。とくに変わったことはないようです。メソッドに型を指定する必要はないとのこと。コンパイラが頑張ってくれるようです。
class Complex(real: double, imaginary: double) {
def re() = real
def im() = imaginary
}
new Complex(1.5, 2.3)
5.1 Methods without arguments
引数がないメソッドの場合は、()を省略できるそうです。お、なんだかメソッド定義なのに値を設定しているみたいですね。細かいところでセンスよさげです。
class Complex(real: double, imaginary: double) {
def re = real
def im = imaginary
}
5.2 Inheritance and overriding
継承もあるようです。スーパークラスを明示的に指定しなくても、Objectを継承していることになっているというのはJavaと一緒ですね。
ただ、メソッドオーバーライドをするためには、override修飾子をつけないといけないんですね。写経してみましょう。
class Complex(real: double, imaginary: double) {
def re = real
def im = imaginary
override def toString() = "" + re + (if (im < 0) "" else "+") + im + "i"
}
つけないでコンパイルを試したところ「method toString needs `override' modifier」と怒られてしまいました。というか、ifの書き方に興味津々です。謎すぎますが、ここはぐっと大人になってスルーしておきます。

コメントする