メソッドのオーバーロード
上記で使用されている max メソッドは、int 型のデータにのみ適用されます。しかし、2 つの浮動小数点型データの最大値を取得したい場合はどうすればよいでしょうか?
解決策は、次のコードに示すように、同じ名前でパラメーターが異なる別のメソッドを作成することです。
public static double max(double num1, double num2) { if (num1 > num2) else return num2;}
max メソッドを呼び出すときに int パラメータを渡すと、int パラメータの max メソッドが呼び出されます。
double パラメーターが渡された場合、double 型の max メソッド本体が呼び出されます。これはメソッドのオーバーロードと呼ばれます。
つまり、クラスの 2 つのメソッドの名前は同じですが、パラメーター リストが異なります。
Java コンパイラは、メソッド シグネチャに基づいて、どのメソッドを呼び出す必要があるかを決定します。
メソッドをオーバーロードすると、プログラムがより明確になり、読みやすくなります。密接に関連したタスクを実行するメソッドは同じ名前を使用する必要があります。
オーバーロードされたメソッドには、異なるパラメーター リストが必要です。修飾子または戻り値の型のみに基づいてメソッドをオーバーロードすることはできません。
変数スコープ
変数のスコープは、変数を参照できるプログラムの部分です。
メソッド内で定義された変数はローカル変数と呼ばれます。
ローカル変数のスコープは、その宣言から始まり、それを含むブロックの終わりで終わります。
ローカル変数は使用する前に宣言する必要があります。
メソッドのパラメーターのスコープはメソッド全体をカバーします。パラメータは実際にはローカル変数です。
for ループの初期化部分で宣言された変数は、ループ全体にわたって有効範囲を持ちます。
ただし、ループ本体内で宣言した変数の適用範囲は、その変数の宣言からループ本体の終了までとなります。以下に示すような変数宣言が含まれています。
メソッド内でネストされていない異なるブロック内で同じ名前のローカル変数を複数回宣言できますが、ネストされたブロック内でローカル変数を 2 回宣言することはできません。