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

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

問題

次のインターフェースを正しく実装しているクラスはどれですか。

public sealed interface MyType permits MyClass {
	void method();
}
A) public non-sealed class MyClass implements MyType { }
B) public abstract class MyClass implements MyType {
	public void method() { System.out.println("MyType::method"); }
     }
C) public sealed class MyClass implements MyType {
	public void method() { System.out.println("MyType::method"); }
     }
D) public class MyClass implements MyType {
	public void method() { System.out.println("MyType::method");}
     }
E) public abstract class MyClass implements MyType {
     }
F) public final class MyClass implements MyType {
	public void method() { System.out.println("MyType::method");}
     }

解答

A) public non-sealed class MyClass implements MyType { }
B) public abstract class MyClass implements MyType {
	public void method() { System.out.println("MyType::method"); }
     }
C) public sealed class MyClass implements MyType {
	public void method() { System.out.println("MyType::method"); }
     }
D) public class MyClass implements MyType {
	public void method() { System.out.println("MyType::method");}
     }
E) public abstract class MyClass implements MyType {
     }
F) public final class MyClass implements MyType {
	public void method() { System.out.println("MyType::method");}
     }

解説

MyType インターフェースは sealed として定義されており、その permits リストには MyClass が含まれています。つまり、MyClassMyType を実装できる唯一のクラスです。Csealed クラスとして MyType を実装しており、method() メソッドも正しくオーバーライドしています。

A) public non-sealed class MyClass implements MyType { }
MyTypesealed なので、このクラスは non-sealed であることは許可されません。

B) public abstract class MyClass implements MyType { public void method() { System.out.println("MyType::method"); } }
MyClassabstract ですが、sealed であるインターフェースに対して適切ではありません。

D) public class MyClass implements MyType { public void method() { System.out.println("MyType::method");} }
MyClasssealed に関する制約に反します。

E) public abstract class MyClass implements MyType { }
MyClassabstract なので、method() を実装していないため不完全です。

F) public final class MyClass implements MyType { public void method() { System.out.println("MyType::method");} }
final クラスは sealed と矛盾します。sealed クラスは final ではありません。

前の問題へ SE17_A-09

次の問題へ SE17_A-11


対象資格:Java SE17 認定資格