Kodrill

Java SE 17 Silver (1Z0-825-JPN) 試験 / 継承とインタフェースの使用 ・ 無料問題 4/5

継承とインタフェースの使用 問題4[抽象クラスの作成と継承]

次のコードを実行したときの出力を選んでください。

Main.java
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 と出力されます。

この問題の答えは、試験の対象バージョンでコードを実際に実行して確かめています。確かめ方は運営者情報に書いています。

「継承とインタフェースの使用」の要点を解説記事で読む

「継承とインタフェースの使用」の無料問題

ここで公開しているのは無料範囲の問題です。無料登録すると、解答の記録・ダッシュボードでの復習ができ、 プレミアムならこの問題セットの全問題と本番形式の模擬試験も解けます。