問題
次のインターフェースを正しく実装しているクラスはどれですか。(2つ選択)
interface MyType {
void print();
}
選択肢
A)
public class MyClass implements MyType {
public void print() {
System.out.println("one");
}
}
B)
public abstract class MyClass implements MyType {
public void print(String str) {
System.out.println("one for" + str);
}
}
C)
public class MyClass implements MyType {
public void print(String str) {
System.out.println("one for" + str);
}
}
D)
public class MyClass implements MyType {
public String print() {
return "one";
}
}
E)
public class MyClass implements MyType {
private void print() {
System.out.println("one");
}
}
F)
public class MyClass implements MyType {
void print() {
System.out.println("one");
}
}
解答
A)
public class MyClass implements MyType {
public void print() {
System.out.println("one");
}
}
B)
public abstract class MyClass implements MyType {
public void print(String str) {
System.out.println("one for" + str);
}
}
C)
public class MyClass implements MyType {
public void print(String str) {
System.out.println("one for" + str);
}
}
D)
public class MyClass implements MyType {
public String print() {
return "one";
}
}
E)
public class MyClass implements MyType {
private void print() {
System.out.println("one");
}
}
F)
public class MyClass implements MyType {
void print() {
System.out.println("one");
}
}
解説
A)
public class MyClass implements MyType {
public void print() {
System.out.println("one");
}
}
正しい。 print
メソッドが正しくオーバーライドされています。
B)
public abstract class MyClass implements MyType {
public void print(String str) {
System.out.println("one for" + str);
}
}
不正解。 print
メソッドがオーバーライドされておらず、異なる引数を持っています。
C)
public class MyClass implements MyType {
public void print(String str) {
System.out.println("one for" + str);
}
}
不正解。 print
メソッドがオーバーライドされておらず、異なる引数を持っています。
D)
public class MyClass implements MyType {
public String print() {
return "one";
}
}
不正解。 戻り値の型が void
ではなく String
になっています。
E)
public class MyClass implements MyType {
private void print() {
System.out.println("one");
}
}
不正解。 アクセス修飾子が private
になっており、インターフェースの要件を満たしていません。
F)
public class MyClass implements MyType {
void print() {
System.out.println("one");
}
}
不正解。 アクセス修飾子が default
になっており、インターフェースの要件を満たしていません。
結論
正しく実装しているのは A のみです。選択肢の中には他に正しい実装はありません。
対象資格:Java SE17 認定資格