アフィリエイト広告を利用しています
最新記事
カテゴリアーカイブ

2019年12月18日

Java オーバーロード

オーバーロードと似た言葉にオーバーライドというのがありますが
今回は、オーバーライドではなく、オーバーロードです。

オーバーロードとは
・同じメソッド名のメソッドを複数定義することができる。
・引数の型、数、並び順が異なっている。
・戻り値の型や引数名はオーバーロードに関係ない。

Javaでは、シグニチャまたはシグネチャと呼ばれる
メソッド名と引数をセットにしたものでメソッドを見分けているため
戻り値の型や引数名が異なっていたとしてもオーバーロードできません。
コンパイルエラーになります。

で、そんなことを考慮しながらオーバーロードを書くとこんな感じです。
オーバーロードのメソッド名は「setChange」。


class Sample {

 private String name;
 private int price;

 //コンストラクタ
 Sample(String name, int price){
  this.name = name;
  this.price = price;
 }

 public void show() {
  System.out.println(this.name + "は" + this.price + "円です。");
 }

 public void setChange(String name, int price) {
  this.name = name;
  this.price = price;
  System.out.println("商品名を" + this.name + "に、" + "価格を" + this.price + "円に変更しました。");
 }

 public void setChange(int price, String name) {
  this.price = price;
  this.name = name;
  System.out.println("価格を" + this.price + "円に、" + "商品名を" + this.name + "に変更しました。");
 }

 public void setChange(String name) {
  this.name = name;
  System.out.println("商品名を" + this.name + "に変更しました。");
 }
}

class Example {
 public static void main(String[] args) {
  Sample s = new Sample("オレンジ", 50);
  s.show();
  s.setChange("キウイフルーツ", 100);
  s.show();
 }
}


===== 実行結果 =====

オレンジは50円です。
商品名をキウイフルーツに、価格を100円に変更しました。
キウイフルーツは100円です。

====================

メインメソッド側で「(String, int)」(s.setChange("キウイフルーツ", 100);)で
3つある「setChange」メソッドの一番目のメソッドを呼び出しています。
2番目を呼び出したい時には
呼び出し側で「(int, String)」(s.setChange(100, "キウイフルーツ");)に
3番目を呼び出したい時には
呼び出し側で「(String)」(s.setChange("キウイフルーツ");)にします。

・引数の型、数、並び順が異なっている。
・戻り値の型や引数名はオーバーロードに関係ない

オーバーロードする時に、この2つは必ず守って下さい。
コンパイルエラーになるので。最初の方でも書いたけど・・・

地球の末路!?




検索