※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

こんにちは。こんぶです。
今日は、オーバーロードを利用したメソッドについて学んでいきましょう!
私の自己紹介等は、こちらからどうぞ。
また、Javaの学習を最初から進めていきたい方は、Java-1から見てみてくださいね。
オーバーロード
プログラムが大きくなってくると似たような処理を行うメソッドを複数作りたいことが出てきたりします。
処理が全く同じで名前などの一部だけ変更して使用したい場合には引数を利用して解決できましたが、似たような処理でも内容が異なる場合には別のメソッドとなってしまします。
別のメソッドとなるので、通常は別のメソッド名を付ける必要があります。
似たような処理でも内容が異なる場合というのは、例えば内容はほぼ同じだったとしても、日本語・韓国語・フランス語の各言語で出力したい場合等です。
同じ名前のメソッドを複数定義することを「オーバーロード」または「多重定義」といいます。
オーバーロードの利用
どのような場合にオーバーロードを利用できるのかというと、「仮引数の型が異なる場合」や「仮引数の個数が異なる場合」です。
メソッドが呼び出される際に、JVMが引数の型と個数を比較して一致するメソッドを呼び出してくれるからです。
ちなみに、仮引数の型や個数が同じで、戻り値の型のみが異なるものはオーバーロードできません。
シグネチャ
メソッドの定義で記述する「メソッド名」や「引数の個数・型・順番」の情報をまとめて「メソッドのシグネチャ」といいます。※メソッドのシグネチャに、戻り値の型は含まれません
つまり、オーバーロードはシグネチャが重複していない場合にのみ利用できるということですね。
オーバーロードを利用したメソッド例
オーバーロードを利用したメソッドを使用する場合のコード例を見てみましょう。

この例では、下部のブロックで「引数なし」「引数1つ」「引数2つ」のprintMessageメソッドを定義しています。上部のブロックでメソッドを呼び出す際には、「引数なし」「引数1つ」「引数2つ」の順番に呼び出し各命令を実行しています。
このように同じメソッド名でも仮引数の個数が異なる場合には、JVMが引数の個数を比較して一致するメソッドを呼び出してくれます。
ちなみに、このコードを実行すると次のように画面に表示されます。

今回のまとめ
★「仮引数の型が異なる場合」や「仮引数の個数が異なる場合」にオーバーロードできる
★仮引数の型や個数が同じで、戻り値の型のみが異なるものはオーバーロードできない
★オーバーロードはシグネチャが重複していない場合にのみ利用可能
・オーバーロード(多重定義):同じ名前のメソッドを複数定義すること
・メソッドのシグネチャ:メソッドの定義で記述する「メソッド名」や「引数の個数・型・順番」の情報(戻り値の型は含まない)
次回は、メソッドの第5弾として「引数や戻り値に配列を使用」する方法と「コマンドライン引数」について説明していこうと思います。
今回の内容のチャレンジ問題はこちらです→チャレンジ問題【Java-29】~メソッド④オーバーロードの利用~
次の内容に進む方はこちらです→【Java-30】メソッド⑤引数や戻り値に配列を使用&コマンドライン引数
それでは、こんぶはじゃ~
コメント