overload

オーバーロードって読むのかオーバロードって読むのか分かりませんがoverloadの勉強。
javaでは一つのクラスの中に同名のメソッドが複数存在することが許されています。
こんな感じに、クラスTestの中に、同名のメソッドAが存在できます。

class Test {
  void A(...........){
    ...
  }
  
  void A(...........){
    ...
  }


なぜ、そんなことが許されているかというと。
それはシグネチャの違いで参照するメソッドを選択しているからです。

シグネチャとは?

signature
メソッドの名前と仮引数の個数と型を合わせたもの。
注意。次の2つはシグネチャに含まれません。

  • メソッドの返却型。つまり、メソッドがどういう型でreturnするか。
  • 仮引数の名前。

Overload.java

class hoge{
  
  private int i;
  private int e;
  private int m;
  
  static void set_value(int i){
    System.out.printf("因数が1つなので\n");
  }

  static void set_value(int e, int m){
    System.out.printf("因数が2つなので\n");
  }

}

class Overload{

  public static void main(String[] args){

    hoge Hoge = new hoge();

    Hoge.set_value(1);
    Hoge.set_value(1,2);

  }

}

実行結果

$ java overload
因数が1つなので
因数が2つなので