【Java SE17 Silver 模擬試験】B-47

Java SE17 Silver 模擬試験
Java SE17 Silver 模擬試験

問題

次のクラスのサブクラスを正しく宣言しているものはどれですか。(2つ選択)

public sealed class Shape permits Square, Triangle { }

選択肢

A)
public abstract class Triangle extends Shape { }
B)
public final class Circle extends Shape { }
C)
public final class Square extends Shape { }
D)
public non-sealed class Rectangle extends Shape {}
E)
public class Square extends Shape { }
F)
public non-sealed class Triangle extends Shape { }
G)
public class Triangle extends Shape { }

解答

A)
public abstract class Triangle extends Shape { }
B)
public final class Circle extends Shape { }
C)
public final class Square extends Shape { }
D)
public non-sealed class Rectangle extends Shape {}
E)
public class Square extends Shape { }
F)
public non-sealed class Triangle extends Shape { }
G)
public class Triangle extends Shape { }

解説

Shape クラスは sealed クラスであり、permits キーワードによって許可されているサブクラスを SquareTriangle と指定しています。このため、正しいサブクラスの宣言は以下の条件を満たす必要があります:

  1. SquareTriangleShape を継承していること。
  2. SquareTriangle の定義は sealed クラスの制約に従う必要がある。

選択肢別:

  • C)public final class Square extends Shape;
    Squarefinal クラスであり、Shape を正しく継承しています。
  • F)public non-sealed class Triangle extends Shape;
    Trianglenon-sealed クラスとして宣言されており、Shape を正しく継承しています。

A)public abstract class Triangle extends Shape;
Trianglesealed クラスのサブクラスとしては許可されていません。sealed クラスは、permits で指定されたクラス名と一致する必要があります。

B)public final class Circle extends Shape;
CircleShape のサブクラスとして宣言されていますが、Shape クラスでは Circlepermits に含まれていないため、コンパイルエラーになります。

D)public non-sealed class Rectangle extends Shape {};
RectangleShape のサブクラスとして許可されていないため、コンパイルエラーになります。

E)public class Square extends Shape;
Square はサブクラスとして適切ですが、sealed クラスの規則に従って final または non-sealed として指定する必要があります(ここでは指定がないため、適切とは言えません)。

G)public class Triangle extends Shape;
TriangleShape のサブクラスとして正しい宣言ですが、sealed クラスの制約に従って final または non-sealed として宣言する必要があります(ここでも指定がないため、適切ではありません)。

前の問題へ SE17_B-46

次の問題へ SE17_B-48

対象資格:Java SE17 認定資格