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

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

問題

次のコードの MyClass について正しい説明はどれですか。

public interface MyTypeA {
	default void myMethod() {
		System.out.println("MySubInterface::myMethod is called.");
	}
}

interface MyTypeB {
	default void myMethod() {
		System.out.println("MyInterface::myMethod is called.");
	}
}

class MyClass implements MyTypeA, MyTypeB {
	//
}

選択肢

A)MyClass では追加のメソッド実装は必要ない。myMethod( ) を使用する場合インターフェース型で参照する必要がある

B)MyClass では myMethod( )を実装する必要がある。インターフェース MyTypeA または MyTypeB のメソッド実装にアクセスする場合は `MyTypeB.default.myMethod( )` のように記述する

C)MyClass では myMethod( )を実装する必要がある。インターフェース MyTypeA または MyTypeB のメソッド実装にアクセスする場合は `MyTypeA.super.myMethod( )` のように記述する

D)MyClass では myMethod( )を実装する必要がある。各インターフェースのメソッド実装にはアクセスできないため、独自の実装を行う必要がある

E)MyClass では追加のメソッド実装は必要ない。myMethod( ) が呼び出されるとインターフェース MyTypeB の実装が使用される

F)MyClass では追加のメソッド実装は必要ない。myMethod( ) が呼び出されるとインターフェース MyTypeA の実装が使用される

解答

A)MyClass では追加のメソッド実装は必要ない。myMethod( ) を使用する場合インターフェース型で参照する必要がある

B)MyClass では myMethod( )を実装する必要がある。インターフェース MyTypeA または MyTypeB のメソッド実装にアクセスする場合は `MyTypeB.default.myMethod( )` のように記述する

C)MyClass では myMethod( )を実装する必要がある。インターフェース MyTypeA または MyTypeB のメソッド実装にアクセスする場合は `MyTypeA.super.myMethod( )` のように記述する

D)MyClass では myMethod( )を実装する必要がある。各インターフェースのメソッド実装にはアクセスできないため、独自の実装を行う必要がある

E)MyClass では追加のメソッド実装は必要ない。myMethod( ) が呼び出されるとインターフェース MyTypeB の実装が使用される

F)MyClass では追加のメソッド実装は必要ない。myMethod( ) が呼び出されるとインターフェース MyTypeA の実装が使用される

解説:

  • MyClassMyTypeAMyTypeB の両方のインターフェースを実装していますが、両方のインターフェースに myMethod() のデフォルト実装があります。この場合、コンパイラはどの myMethod() を呼び出すべきかを特定できないため、MyClass では myMethod() を自分で実装する必要があります。
  • MyTypeAMyTypeB のメソッドにアクセスするには、MyTypeA.super.myMethod() または MyTypeB.super.myMethod() のように、どのインターフェースのメソッドを呼び出すのかを明示的に指定する必要があります。

他の選択肢の理由:

  • A): myMethod() を実装する必要があるので、誤り。
  • B): MyTypeB.default.myMethod() という記述は正しくない。呼び出し方が間違っている。
  • D): 各インターフェースのメソッド実装にアクセスできるため、独自の実装を行う必要はない。
  • E): どちらの実装が使用されるかは実装次第で、明示的に指定しない限り、どちらかは決まらない。
  • F): 同様に、どちらの実装が使用されるかは不確定。

したがって、正解は C) です。

前の問題へ SE17_B-53

次の問題へ SE17_B-55

対象資格:Java SE17 認定資格