クラスとメソッド応用問題
以下のコードを実行したとき、何が出力されますか? class Counter { private static int count = 0; Counter() { count++; } static int getCount() { return count; } } public class Main { public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); Counter c3 = new Counter(); System.out.println(Counter.getCount()); } }
A.1
✗ staticフィールドはクラスレベルで共有されるため、3回目のコンストラクタ呼び出し後は count は 3 になります。
B.2
✗ 2つのインスタンスのみを作成した場合のカウント値です。このコードでは3つのインスタンスが生成されます。
C.3← 正解
✓ 正解です。staticフィールド count はクラス全体で共有され、3つのインスタンス生成により3回インクリメントされます。
D.コンパイルエラーが発生する
✗ このコードは正しい文法で、コンパイルエラーは発生しません。staticメソッドからstaticフィールドへのアクセスは有効です。