クラスとメソッド応用問題
次のコードを実行したとき、出力結果として正しいものはどれですか? class Box { private int value; Box(int value) { this.value = value; } int getValue() { return value; } } class ColoredBox extends Box { private String color; ColoredBox(int value, String color) { super(value); this.color = color; } } public class Main { public static void main(String[] args) { ColoredBox cb = new ColoredBox(100, "red"); System.out.println(cb.getValue()); } }
A.red が出力される
✗ cb.getValue() は ColoredBox インスタンスから親クラスのメソッドを呼び出しており、色ではなく値を返します。
B.100 が出力される← 正解
✓ 正解です。ColoredBox のコンストラクタで super(100) により親クラスの value に 100 が設定され、getValue() メソッドで 100 が返されます。
C.null が出力される
✗ value フィールドは 100 で初期化されているため、null は返されません。
D.コンパイルエラーが発生する
✗ このコードは正しい文法です。ColoredBox は Box を継承し、getValue() は protected でも public でも親クラスから呼び出せます。