クラスとメソッド応用問題
以下のコードで、メソッド calc() を複数回呼び出したとき、何が起きますか? class Calculator { private static int result = 0; private int instanceResult = 0; static void calc(int value) { result += value; } void instanceCalc(int value) { instanceResult += value; } } public class Main { public static void main(String[] args) { Calculator c1 = new Calculator(); Calculator c2 = new Calculator(); Calculator.calc(5); Calculator.calc(3); c1.instanceCalc(2); c2.instanceCalc(4); System.out.println(Calculator.result); } }
A.5 が出力される
✗ 5 は1回目の calc(5) 呼び出し直後の値であり、最終結果ではありません。その後 calc(3) も呼ばれるため、result は最終的に 5 + 3 = 8 になります。
B.8 が出力される← 正解
✓ 正解です。staticメソッド calc() は staticフィールド result に 5 と 3 を加算し、8 になります。instanceCalc() は各インスタンスの instanceResult にのみ影響し、staticフィールド result には影響しません。
C.14 が出力される
✗ 14 は全ての値を合計した場合(5+3+2+4)ですが、staticフィールド result には instanceResult の値は加算されません。
D.コンパイルエラーが発生する
✗ このコードは正しい文法です。staticメソッドはクラスから直接呼び出せ、インスタンスからも呼び出せます。