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

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

問題

次のうち、正しいクラスの定義はどれですか。

A)
final abstract class M { }
B)
abstract class M {
	final void method() {
	}
}
C)
class M {
	abstract void method() {
	}
}
D)
sealed class M permits X { }
abstract class X extends M { }
E)
abstract class M {
	void method();
}

解答

A)
final abstract class M { }
B)
abstract class M {
	final void method() {
	}
}
C)
class M {
	abstract void method() {
	}
}
D)
sealed class M permits X { }
abstract class X extends M { }
E)
abstract class M {
void method();
}

解説

B)の説明:

  • abstract class M は正しい形で抽象クラスを定義しており、その中に final 修飾子が付いたメソッド method を持っています。これは有効です。抽象クラス内に final メソッドがあることは可能です。

A) final abstract class M { }

  • これは無効です。final クラスはサブクラスを持てないため、抽象クラスにすることはできません。

C) class M { abstract void method() { }

  • これは無効です。非抽象クラス内に抽象メソッドを定義することはできません。

D) sealed class M permits X { }abstract class X extends M { }

  • これは無効です。sealed クラスは permits を使ってサブクラスを制約しますが、X は抽象クラスなので、正しくサブクラスとして機能しません。

E) abstract class M { void method(); }

  • これは無効です。抽象クラスの中でメソッドの宣言をしている場合、メソッドの実装がないため、メソッドを抽象として宣言する必要がありますが、abstract 修飾子が不足しています。正しくは abstract void method(); となるべきです。

前の問題へ SE17_B-18

次の問題へ SE17_B-20

対象資格:Java SE17 認定資格