UPSTARTSのぱみやすです
今回はJavaのメソッドのオーバーロードをみていきます
まずはじめにメソッドでは複数の値を渡すこともできます
では例をみてみましょう
1 2 3 4 5 6 7 |
public static void main(String[] args) { pirates("赤髪","シャンクス"); pirates("麦わら","ルフィ"); } public static void pirates(String pirate,String name) { System.out.println(pirate + "海賊団の船長は" + name); } |
このようにただ単に、「,(ピリオド)」で区切ってあげます
受け取る側も「,(ピリオド)」で区切ってあげればOKです
「piratesメソッド」で「pirate」と「name」を表示してみます
実行するとこのように表示されます
赤髪海賊団の船長はシャンクス
麦わら海賊団の船長はルフィ
オーバーロード
またメソッドの引数ですが、個数や型が違えば同じ名前のメッソドをいくつでも作ることができます
同じメソッド名で引数の異なるものをメソッドの「オーバーロード」と言います
同じ型で引数の数が違う場合
では、今回は引数の異なるメソッドを3つ作ってみましょう
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public static void main(String[] args) { pirates(); pirates("赤髪"); pirates("麦わら","ルフィ"); } public static void pirates() { System.out.println("海賊団"); } public static void pirates(String pirate) { System.out.println(pirate + "海賊団"); } public static void pirates(String pirate,String name) { System.out.println(pirate + "海賊団の船長は" + name); } |
メソッドの引数が「無いもの」と「1つのもの」と「2つのもの」を作ってあげます
そのあとに呼び出し先のメソッドも同じように引数「なし」と「1つ」と「2つ」のものを作ります
こうするとメソッドの引数の数によってそれぞれメソッドが呼ばれます
「2行目」は「6行目」
「3行目」は「9行目」
「4行目」は「12行目」のメソッドが呼ばれます
実行するとこのように表示されます
海賊団
赤髪海賊団
麦わら海賊団の船長はルフィ
型が異なる場合
また型が異なる場合もみてみましょう
「2行目」のメソッドで「int型」の「7」を渡してみます
受け取る側も変更します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public static void main(String[] args) { pirates(7); pirates("赤髪"); pirates("麦わら","ルフィ"); } public static void pirates(int i) { System.out.println(i + "武海"); } public static void pirates(String pirate) { System.out.println(pirate + "海賊団"); } public static void pirates(String pirate,String name) { System.out.println(pirate + "海賊団の船長は" + name); } |
実行するとこのように表示されます
7武海
赤髪海賊団
麦わら海賊団の船長はルフィ
オーバーロードできない場合
引数の型や個数が全く同じものはエラーになってしまします
1 2 3 4 5 6 7 8 9 |
public static void main(String[] args) { pirates("麦わら"); } public static void pirates(String pirate) { System.out.println(pirate); } public static void pirates(String name) { System.out.println(name); } |
「pirate("麦わら")」と呼ばれたらどっちのメソッドが呼ばれたか判断のしようがないのでエラーになってしまいます
まとめ
メソッドのオーバーロードもよく使うので覚えておきましょう
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package lesson; public class Main { //メソッドのオーバーロード public static void main(String[] args) { pirates(); pirates("赤髪"); pirates("麦わら","ルフィ"); } public static void pirates() { System.out.println("海賊団"); } public static void pirates(String pirate) { System.out.println(pirate + "海賊団"); } public static void pirates(String pirate,String name) { System.out.println(pirate + "海賊団の船長は" + name); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package lesson; public class Main { //メソッドのオーバーロード public static void main(String[] args) { pirates(7); pirates("赤髪"); pirates("麦わら","ルフィ"); } public static void pirates(int i) { System.out.println(i + "武海"); } public static void pirates(String pirate) { System.out.println(pirate + "海賊団"); } public static void pirates(String pirate,String name) { System.out.println(pirate + "海賊団の船長は" + name); } } |
では次回はクラスとパッケージについてやっていきます