Scalaでメソッドのオーバーロード
メソッドのオーバーロードとは?
オーバーロードとは同じメソッド名で異なる個数の引数や異なる型の引数をとるメソッドを複数定義することです。
上の説明だけでは分かりにくい部分もあるのでさっそくコードで見てみます。
scala> class Person(name:String, age:Int){ | def hello() = println("Hello " + name) | def hello(dialogue:String) = println("Hello " + name + "," + dialogue ) | def olderTha(n:Int):Boolean = { age > n } | } defined class Person scala> val tanaka = new Person("Tanaka", 28) tanaka: Person = Person@1a93a7ca scala> tanaka.hello Hello Tanaka scala> tanaka.hello("Nice to meet you!") Hello Tanaka,Nice to meet you!
Personクラスではhelloメソッドが2つ定義されていますが、呼び出し側の引数の与え方によって、それぞれ違うhelloメソッドが呼び出されていることが確認できます。
ちょっと気になったので調べてみました。
- 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘
- 出版社/メーカー: インプレスジャパン
- 発売日: 2011/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 12人 クリック: 235回
- この商品を含むブログ (45件) を見る
- 作者: 中村修太
- 出版社/メーカー: 中村 修太
- 発売日: 2013/03/02
- メディア: Kindle版
- 購入: 1人 クリック: 27回
- この商品を含むブログ (4件) を見る