Java SE 17 Silver (1Z0-825-JPN) 試験 / 継承とインタフェースの使用 ・ 無料問題 4/5
継承とインタフェースの使用 問題4[抽象クラスの作成と継承]
次のコードを実行したときの出力を選んでください。
abstract class Shape { Shape() { System.out.print(name() + " "); } abstract String name();}class Circle extends Shape { String label = "circle"; String name() { return label; }}public class Main { public static void main(String[] args) { new Circle(); }}選択肢
- A.circle
- B.null正解
- C.3行目でコンパイルエラーになる
- D.Shape
解説実行して確認済み
抽象クラスのコンストラクタから抽象メソッドを呼ぶこと自体は可能で、実行されるのは実体の Circle の name です。ただし、スーパークラスのコンストラクタはサブクラスのフィールドが初期化される前に実行されるため、その時点の label はまだ初期値の null です。そのため circle ではなく null と出力されます。
この問題の答えは、試験の対象バージョンでコードを実際に実行して確かめています。確かめ方は運営者情報に書いています。
Java SE 17 Silver (1Z0-825-JPN) 試験 の他の分野の無料問題
ここで公開しているのは無料範囲の問題です。無料登録すると、解答の記録・ダッシュボードでの復習ができ、 プレミアムならこの問題セットの全問題と本番形式の模擬試験も解けます。