【Java】オーバーロードとは?使い方をサンプルコードで徹底解説!
オーバーロードとは同じメソッド名でパラメータのみが異なるメソッドを作成することをいいます。
オーバーロードを使うことで、1つのクラスに同じ名前のメソッドを複数定義することができ、1つのメソッド名を定義するだけで引数によって処理を切り替えれることができます。
今回はオーバーロードの使い方についてサンプルコードを使って徹底的に解説していきます。
目次
オーバーロードとは
オーバーロードとは同じメソッド名でパラメータのみが異なるメソッドを作成することをいいます。
オーバーロードの書き方
オーバーロードの構文は下記となります。
1 2 3 4 5 6 7 8 9 |
void メソッドA(引数1) { 処理内容1 } void メソッドA(引数1, 引数2 ) { 処理内容2 } |
メソッド名を同じにして、引数を変更することでメソッドAの処理は処理内容1から処理内容2にオーバーロードされます。
オーバーロードの注意点
オーバーロードは、パラメータが異なるメソッドを作成する為、引数の型と個数が全く同じである同名のメソッドは2つ以上定義できませんので注意してください。
また、オーバーロードさせるときは、メソッドの戻り値の型、可視性(publicやprivateなど)、「throws」節を一致させる必要があります。
いずれかが異なっていると、コンパイルエラーとなります。
オーバーロードを使ったサンプルコード
オーバーロードを使ったサンプルコードを見てみましょう。
パラメータを書き換えた場合やパラメータの個数を変えてオーバーロードを行っています。
パラメータを書き換えた場合
OverLoad.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// 整数を2倍にするメソッド public class OverLoad { //受け取り値を2倍にして返す(byte) public void doubleValue(String type, byte val) { System.out.println(type + "型: " + val * val); } //受け取り値を2倍にして返す(short) public void doubleValue(String type, short val) { System.out.println(type + "型: " + val * val); } //受け取り値を2倍にして返す(int) public void doubleValue(String type, int val) { System.out.println(type + "型: " + val * val); } // 受け取り値を2倍にして返す(long) public void doubleValue(String type, long val) { System.out.println(type + "型: " + val * val); } } |
Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class Main { public static void main(String[] args) throws Exception { OverLoad data1 = new OverLoad(); data1.doubleValue("byte", 10); data1.doubleValue("sort", 9); data1.doubleValue("int", 8); data1.doubleValue("long", 34); } } |
出力結果
byte型: 100
sort型: 81
int型: 64
long型: 1156
サンプルコードでは、受け取った数を2倍にして返すメソッドを持つクラスを定義しています。
また、受け取る整数の型を特定しないように、4つのメソッドを用意しています。
パラメータの型を変えるだけでなく、パラメータの数を変える場合もあります。
パラメータがない場合
パラメータがない場合を見てみます。
OverLoad.java
1 2 3 4 5 6 7 8 9 10 11 12 |
// パラメータがない場合 public class OverLoad { void greeting(String name) { System.out.println(name + "さんこんにちは"); } void greeting() { System.out.println("こんにちは"); } } |
Main.java
1 2 3 4 5 6 7 8 |
public class Main { public static void main(String[] args) throws Exception { OverLoad data1 = new OverLoad(); data1.greeting(); } } |
出力結果
こんにちは
パラメータが1つの場合
パラメータを1つに設定した場合を見てみます。
OverLoad.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// パラメータが1つの場合 public class OverLoad { void greeting() { System.out.println("こんにちは"); } void greeting(String name) { System.out.println(name + "さんこんにちは"); } } |
Main.java
1 2 3 4 5 6 7 8 9 |
public class Main { public static void main(String[] args) throws Exception { OverLoad data1 = new OverLoad(); data1.greeting("木村拓哉"); } } |
出力結果
木村拓哉さんこんにちは
パラメータが2つの場合
パラメータを2つに設定した場合を見てみます。
OverLoad.java
1 2 3 4 5 6 7 8 9 10 11 12 |
// パラメータが2つの場合 public class OverLoad { void greeting() { System.out.println("こんにちは"); } void greeting(String name, String from) { System.out.println(from + "からきた" + name + "さんこんにちは"); } } |
Main.java
1 2 3 4 5 6 7 8 |
public class Main { public static void main(String[] args) throws Exception { OverLoad data1 = new OverLoad(); data1.greeting("木村拓哉", "北海道"); } } |
出力結果
北海道からきた木村拓哉さんこんにちは
なお、オーバーロードはメソッドだけでなく、コンストラクタでも利用可能です。
今回のポイント
オーバーロードでパラメータのみが異なる同じメソッド名を作成
⚫︎ オーバーロードで同じメソッド名でパラメータのみが異なるメソッドを作成することができる
⚫︎ オーバーロードは、引数の型と個数が全く同じである同名のメソッドは2つ以上定義できない
⚫︎ オーバーロードさせるときは、メソッドの戻り値の型、publicやprivate、「throws」節を一致させる必要があり、いずれかが異なっていると、コンパイルエラーとなる
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。