【はじめてのJava】メソッドの引数【オブジェクトとクラス編】
はじめてのJava
このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。
オブジェクトとクラス編
オブジェクトとクラス編では、Javaを扱う上で非常によく出てくる「オブジェクト」や「クラス」について扱っていきます。
前回は「メソッドの使い方」について扱いました。
今回は「メソッドの引数」について扱っていきます。
目次
引数
引数 とは「メソッドに渡す値」のことです。引数について詳しく見ていきましょう。
引数とは
引数とは、上記で書いた通り、 メソッドに渡す値 のことです。
例えば、下図のような、コンビニやスーパーのレジを考えます。
この時、レジの機械は「商品の値段」「支払金額」を基に「お釣り」を計算しています。ですので、レジがメソッドの役割を果たしていると考えましょう。
このとき、レジメソッドが処理を行い、お釣りを出すためには、「商品の値段」と「支払金額」が必要です。この「商品の値段」「支払金額」がレジメソッドにとっての引数になります。
引数の書き方
引数は以下の2か所で書く必要があります。
- メソッドの定義時(メソッドを作る場所)
- メソッドの呼び出し時(メソッドを使うとき)
メソッドの定義時にはそのメソッドを使うためにはどのような引数が必要なのかを書きます。
メソッドの呼び出し時には実際にメソッドに渡す値を書きます。
順にみていきましょう。
メソッドの定義時
メソッドの定義時には、そのメソッドを使うためにはどのような引数が必要なのかを書きます。
改めてメソッドの書き方を確認すると、以下の通りとなっています。
/* 戻り値(のデータ型) */ /* メソッド名 */(/*引数*/){ /* 処理内容 */ /* 戻り値(の値) */ }
レジメソッドの名前をcashRegisterとすると、以下のようになります。
/* 戻り値(のデータ型) */ cashRegister(/*引数*/){ //引数の部分を考えていきます。 /* 処理内容 */ /* 戻り値(の値) */ }
以前作ったCarクラスのaccellメソッドでは「戻り値なし」「引数無し」でしたが、今回のレジメソッドには引数が必要です。
メソッドの定義時に引数の部分を定義する必要があります。
引数の定義の手順
引数の定義の手順は以下の通りです。
- 引数のデータ型を決める
- メソッド内で使用する引数の名前を決める
手順に沿って決めていきましょう。
まずは引数のデータ型を決めます。今回は「商品の値段」「支払金額」の2つを引数として渡す必要があります。
どちらも整数で渡せばOKだと考え、「int型」にしましょう。
これを反映させると次のようになります。※この段階ではまだ作成途中ですので、Javaの引数の書き方としては不完全です。
/* 戻り値(のデータ型) */ cashRegister(int, int){ //これでは引数として不完全 /* 処理内容 */ /* 戻り値(の値) */ }
これで引数のデータ型は決まりました。しかし、このままでは2つの引数には名前がないため、メソッド内でどちらがどちらなのか区別することができません。
そこで続けて引数名を決めます。引数名は「どんなデータを渡せばよいのか一目でわかる名前」を付けると良いです。
今回は商品の値段をprice、支払金額をpaymentとしましょう。
これを反映させると次のようになります。
/* 戻り値(のデータ型) */ cashRegister(int price, int payment){ /* 処理内容 */ /* 戻り値(の値) */ }
これで引数を定義することができました。
メソッドの呼び出し時
メソッドの呼び出し時には実際にメソッドに渡す値を書きます。
具体的に見てみましょう。
例えば、180円の商品を買う際に200円支払う場合は以下のように書きます。
cashRegister(180, 200);
この時、引数として記載する順番は、メソッドを定義した時の順番に従います。今回の場合は「商品の値段」が先、「支払金額」が後になります。
逆にすると、商品の値段と支払金額が逆転してしまうので気をつけてください。
また、引数は変数で渡すことも可能です。例えば、以下のようにすることも可能です。
int sumPrice = 180; int cash = 200; cashRegister(sumPrice, cash);
引数を変数で渡す場合、メソッドの定義とは異なる名前の変数で渡しても問題ありません。
(なお、混乱を避けるため、同じ名前の変数を定義して渡すこともあります。)
まとめ
メソッドが処理をするために必要な値は引数として渡す。
引数はメソッドの定義時に「データ型」「メソッド内での名前」を決める。
メソッドの呼び出し時には実際に処理に使う値を引数として渡す。
次回
次回は戻り値について詳しく触れていきます。
はじめてのJavaシリーズの目次はこちら
オブジェクトとクラス編はこちら