メソッドの引数と戻り値

クラスからオブジェクトを作成すると、クラスで定義されているメソッドを呼び出すことができます。このとき呼び出し側からメソッドに値を渡すことができます。この値を引数といいます。また、メソッドは処理結果などの値を呼び出し元へ返すことができます。この値を戻り値といいます。ここではオブジェクト指向におけるメソッドの引数と戻り値について解説します。

目次

  1. 引数
  2. 戻り値

引数

メソッドを呼び出すときに、呼び出し元から値をメソッドに渡すことができます。メソッドに渡す値のことを引数といいます。

class クラス名{
  戻り値の型 メソッド名(引数の型 変数){
    // ・・・
  }
}

オブジェクト.メソッド名(引数);

メソッドに値を渡すときは、メソッド名のあとに続く括弧の中に渡す値(引数)を記述します。メソッド側では、渡された値が括弧内で定義された変数に代入されます。この変数はメソッドの中で利用することができます。どのような型の値を受け取るのかは、メソッドの定義で指定します。

なおメソッドに渡される値は、呼び出し元の値がコピーされたものになります。

実際の例を見ながら確認してみます。 setPrice メソッドは呼び出し元から int 型の値を 1 つ受け取ります。

class Product {
  private int price;

  void setPrice(int newprice) {
    price = newprice;
  }
}

この場合、渡されてきた値は変数 newprice に格納されます。この変数は setPrice メソッド内でのみ利用できる変数です。今回は呼び出し元から渡された値を、このクラスの price フィールドに設定しています。

次はメソッドを呼び出す側のコードです。メソッドを呼び出すときに 100 という値を渡しています。

Product p = new Product();
p.setPrice(100);

値を受け取るメソッド側で int 型の値を受け取ると定義しているため、呼び出し側では int 型の値を渡す必要があります。

複数の引数

メソッドを呼び出すときに複数の引数を指定することもできます。

class クラス名{
  戻り値の型 メソッド名(引数の型1 変数1, 引数の型2 変数2, ...){
    // ・・・
  }
}

オブジェクト.メソッド名(引数1, 引数2, ...);

メソッドを呼び出すときは、メソッドに渡したい値をカンマ(,)で区切って記述します。メソッド側でも同じように、受け取る引数の数だけ型と変数をカンマで区切って記述します。

例えばメソッド側で引数を 2 つ受け取るように定義している場合、メソッドを呼び出すときも引数を必ず 2 つ指定する必要があります。

戻り値

メソッドが呼び出されると、メソッド内の処理が実行されます。メソッドでは処理結果などを呼び出し元に返すことができます。返される値のことを戻り値といいます。

class クラス名{
  戻り値の型 メソッド名(引数の型 変数){
    // ・・・
    return 戻り値;
  }
}

戻り値の型 変数 = オブジェクト.メソッド名(引数);

メソッドから値を返す場合、メソッド名の前に戻り値の型を記述します。そしてメソッド内で return のあとに返す値を記述します。メソッドから呼び出し元に返された値は、変数に代入して利用することができます。

メソッドは 1 つの値を戻り値として返します。複数の値を返したい場合は、配列やオブジェクトなどにまとめて返します。

メソッド内で return が実行されると、その時点でメソッドの処理は終了します。つまり、メソッドの途中で呼び出し元へ値を返したあとに、残りの処理を続けて実行することはできません。 return のあとに処理を書いても実行されないため、コンパイルエラーになります。

実際の例を見ながら確認してみます。 getPrice メソッドは呼び出し元へ int 型の値を 1 つ返します。

class Product {
  private int price;

  int getPrice() {
    return price;
  }
}

return のあとに price フィールドが記述されていますので、メソッドの呼び出し元に price フィールドの値が返されます。

メソッドを呼び出す側では、メソッドから返された値が左辺の変数に代入されます。

Product p = new Product();
int myprice = p.getPrice();

getPrice メソッドの戻り値が変数 myprice に代入されます。

戻り値を利用しない場合

呼び出したメソッドから値が返された場合でも、呼び出し元で使用しない場合は変数などに代入する必要はありません。先ほどの例の場合であれば、戻り値を使用しない場合は単に次のように記述してください。

Product p = new Product();
p.getPrice();

戻り値がないメソッド

メソッドの中には値を返さないものもあります。その場合は戻り値の型として void を指定します。

class Product {
  void showPrice() {
    System.out.println(100);
  }
}

このように void が指定されたメソッドは、呼び出し元に値を返しません。

-- --

オブジェクト指向におけるメソッドの引数と戻り値について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。