Developer

【はじめてのJava】引数や戻り値があるメソッドの使い方【オブジェクトとクラス編】
2021.10.29
Lv1

【はじめてのJava】引数や戻り値があるメソッドの使い方【オブジェクトとクラス編】

はじめてのJava

このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。


オブジェクトとクラス編

オブジェクトとクラス編では、Javaを扱う上で非常によく出てくる「オブジェクト」や「クラス」について扱っていきます。

前回は「メソッドの戻り値」について扱いました。

今回は「引数や戻り値があるメソッドの使い方」についてまとめます。


目次


引数や戻り値があるメソッドを使う

引数や戻り値があるメソッドを使うときも、以前作成したCarクラスのaccellメソッドと基本的な使い方は全く変わりません。

具体的に見ていきましょう


サンプルソース

今回はShopクラスを作成しました。このShopクラスには、前回までで作成したcashRegisterメソッドを定義しました。

public class Shop{
  int cashRegister(int price, int payment){
    int change = payment - price; //お釣りの金額の計算
    return change;
  }
}

cashRegisterメソッドのイメージとしては下の図のように、商品の値段と支払金額からお釣りを戻してくれるメソッドです。

では、このcashRegisterメソッドを使ってみましょう。


メソッドの使い方

メソッドを使うためにはShopクラスをインスタンス化する必要があります。

そこで、今回は以下のようなShopMainクラスを作成しました。Shopをインスタンス化しsというインスタンス変数として扱えるようにしています。また、バナナの値段を表すbananaPrice変数と支払金額を表すpay変数を定義しています。

public class ShopMain{
  public static void main(String[] args){
    Shop s = new Shop();
    int bananaPrice = 180;
    int pay = 200;
  }
}

では、実際にcashRegisterメソッドを使ってみます。


cashRegisterメソッドを使ってみる

実際にcashRegisterメソッドを使ってみます。

cashRegisterメソッドを使うだけであれば、以下のようにすればOKです。cashRegisterメソッドは処理を行うために引数が必要なので、bananaPriceとpayをcashRegisterメソッドの呼び出し時に引数として指定しています。

public class ShopMain{
  public static void main(String[] args){
    Shop s = new Shop();
    int bananaPrice = 180;
    int pay = 200;
    s.cashRegister(bananaPrice, pay); //ここを記述
  }
}

引数の数やデータ型に互換性がないとコンパイルエラーとなります。引数の順番が異なっている場合、コンパイルエラーを起こしたり、意図とは異なる処理が行われたりするので注意してください。

これでcashRegisterメソッド自体は実行されます。

ただし、このままではcashRegisterメソッドから帰ってきた「お釣り」がどこにも保存されません。

そこで、戻り値を保存するための変数changeを作成し、この中に「お釣り」を保存します。

public class ShopMain{
  public static void main(String[] args){
    Shop s = new Shop();
    int bananaPrice = 180;
    int pay = 200;
    int change; //ここを追加
    change = s.cashRegister(bananaPrice, pay); //ここを変更
  }
}

これで、「お釣り」が保存されました。


確認

戻り値と引数があるメソッドの使い方はこれで終わりです。ただし、これでは本当にお釣りが戻ってきているのか分かりません。

そこで、画面にお釣りの金額が表示されるようにしました。

public class ShopMain{
  public static void main(String[] args){
    Shop s = new Shop();
    int bananaPrice = 180;
    int pay = 200;
    int change;
    change = s.cashRegister(bananaPrice, pay);
    System.out.println(change + "円のお釣りです。"); //ここを追加
  }
}

実行してみると、実際に20円のお釣りになっていることが分かります。


ソースコード

今回使用したソースコードをまとめて記載します。2つのソースコードは同じディレクトリに配置する必要があります。

Shop.java

public class Shop{
  int cashRegister(int price, int payment){
    int change = payment - price; //お釣りの金額の計算
    return change;
  }
}

ShopMain.java

public class ShopMain{
  public static void main(String[] args){
    Shop s = new Shop();
    int bananaPrice = 180;
    int pay = 200;
    int change;
    change = s.cashRegister(bananaPrice, pay);
    System.out.println(change + "円のお釣りです。"); //ここを追加
  }
}

まとめ

引数があるメソッドを使うときには、メソッドの呼び出し時に引数を指定する。
引数が足りない場合や指定したデータ型に互換性がないとコンパイルエラーになる。
引数の順番が異なるとコンパイルエラーが起こったり、意図とは異なる処理が実行されたりする。
戻り値は変数で受け取らないと保存されない。

次回

次回はメソッドのオーバーロードについて扱います。


はじめてのJavaシリーズの目次はこちら
オブジェクトとクラス編はこちら


java 11 の練習問題一覧はこちら
はじめてのJavaシリーズの練習問題一覧はこちら