【Java SE17 Silver 模擬試験】A-46

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

問題

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

sealed class Base permits Sub{
	int id;
}

選択肢

A) final class Sub extends Base { }
B) class Sub extends Base { }
C) abstract class Sub extends Base { }
D) sealed class Sub extends Base { }
E) final class Child extends Base { }

解答

A) final class Sub extends Base { }
B) class Sub extends Base { }
C) abstract class Sub extends Base { }
D) sealed class Sub extends Base { }
E) final class Child extends Base { }

解説

シールクラスを継承するサブクラスは、finalを付与し継承を禁止しなくてはいけません。
また、継承できるサブクラスは、シールクラスで指定されたクラスのみです。
設問では、

sealed class Base permits Sub{ }

と、Subクラスと指定されているため、それ以外のクラスは継承できません
よって、A) final class Sub extends Base { }が正解です。

A) final class Sub extends Base { }

この選択肢は正しいです。sealed クラス Base に対して、permits で指定された Sub クラスは final として宣言されています。これにより、Sub はサブクラス化できないことを示しています。

他の選択肢について:

B) class Sub extends Base { }

  • 理由: Base クラスが permitsSub を指定しているため、Sub は適切に宣言されていますが、permits に指定されているクラスの正しい宣言としては finalsealed でなければなりません。

C) abstract class Sub extends Base { }

  • 理由: Subabstract である場合、Base で許可されているクラスとしては正しくありません。サブクラスは final または non-sealed である必要があります。

D) sealed class Sub extends Base { }

  • 理由: Subsealed である場合、そのサブクラスも指定されなければなりませんが、Base には他のサブクラスが指定されていないため、正しくありません。

E) final class Child extends Base { }

  • 理由: ChildBase のサブクラスとして宣言されていますが、permits で指定されていないため、正しくありません。Base のサブクラスは Sub のみとされます。

したがって、正しい選択肢は A です。

前の問題へ SE17_A-45

次の問題へ SE17_A-47


対象資格:Java SE17 認定資格