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

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

問題

次のコードをコンパイル、実行するとどうなりますか。

public class Main {
	public static void main(String... args) {
		TypeA o1 = new Base();
		TypeA o2 = new Sub();
		TypeA o3 = new Base();
		TypeA o4 = new Sub();
		o1.print("Duke");
		o2.print("Duke");
		o3.print("Duke");
		o4.print("Duke");
	}
}

interface TypeA {
	default void print(String s) {
		System.out.print(s + ",");
	}
}

interface TypeB {
	void print(String s);
}

class Base implements TypeA, TypeB {
	public void print(String s) {
		TypeA.super.print(s);
	}
}

class Sub extends Base {
	public void print(String s) {
		System.out.print(s + ":");
	}
}

選択肢

A)Duke,Duke:Duke:Duke: が出力される

B)コンパイルエラーになる

C)Duke,Duke,Duke,Duke: が出力される

D)ClassCastException がスローされる

E)Duke,Duke:Duke,Duke: が出力される

F)Duke,Duke,Duke,Duke, が出力される

解答

A)Duke,Duke:Duke:Duke: が出力される

B)コンパイルエラーになる

C)Duke,Duke,Duke,Duke: が出力される

D)ClassCastException がスローされる

E)Duke,Duke:Duke,Duke: が出力される

F)Duke,Duke,Duke,Duke, が出力される

解説

public class Main {
	public static void main(String... args) {
		TypeA o1 = new Base();   //1-1.
		TypeA o2 = new Sub();   //2-1.
		TypeA o3 = new Base();   //3-1.
		TypeA o4 = new Sub();   //4-1.
		o1.print("Duke");   //1-2.
		o2.print("Duke");   //2-2.
		o3.print("Duke");   //3-2.
		o4.print("Duke");   //4-2.
	}
}

interface TypeA {
	default void print(String s) {      //1-3.   3-5.
		System.out.print(s + ",");   //1-4.   3-6. Dukeを出力
	}
}

interface TypeB {
	void print(String s);
}

class Base implements TypeA, TypeB {
	public void print(String s) {      //3-3.
		TypeA.super.print(s);      //3-4.
	}
}

class Sub extends Base {
	public void print(String s) {   //2-3.  4-3.
		System.out.print(s + ":");   //2-4. 4-4.  Dukeを出力
	}
}

前の問題へ SE17_A-50

次の問題へ SE17_A-52


対象資格:Java SE17 認定資格