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

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

問題

次のコードの//[ A ] の部分に記述するとコンパイルエラーになるものはどれですか。(3つ選択)

class MyClass {
	public int execute(int a, int b) {
		return a + b;
	}
	//[ A ]
}

選択肢

A)
public int execute(int i) {
	return i * 5;
}
B)
public int execute(long l,Integer i) {
	return (int)l + i;
}
C)
public int execute(Integer i, Integer j) {
	return i + j;
}
D)
public long execute(Integer i) {
	return i.longValue();
}
E)
public void execute(int m, int n) {
	int o = m + n;
}
F)
public int execute(int x, int y) {
	return x + y;
}
G)
public int execute(long l, long m) {
	return (int)l + m;
}

解答

A)
public int execute(int i) {
	return i * 5;
}
B)
public int execute(long l,Integer i) {
	return (int)l + i;
}
C)
public int execute(Integer i, Integer j) {
	return i + j;
}
D)
public long execute(Integer i) {
	return i.longValue();
}
E)
public void execute(int m, int n) {
	int o = m + n;
}
F)
public int execute(int x, int y) {
	return x + y;
}
G)
public int execute(long l, long m) {
	return (int)l + m;
}

解説

コンパイルエラーになる選択肢を見ていきましょう。

コードの概要

javaコードをコピーするclass MyClass {
    public int execute(int a, int b) {
        return a + b;
    }
    //[ A ]
}

元のメソッド execute(int a, int b) に基づき、以下の条件でコンパイルエラーを確認します:

  1. シグネチャが同じ(オーバーロードの衝突)
  2. 引数の数が異なるが、戻り値の型が異なる(オーバーロードの衝突)

選択肢の確認

A)

public int execute(int i) {
return i * 5;
}
  • 解説: 同じ名前と引数の型(int)で引数の数が異なるため、オーバーロードの衝突が起きる。→ コンパイルエラー

B)

public int execute(long l, Integer i) {
return (int)l + i;
}
  • 解説: 引数の型が異なるため、別のメソッドとして扱われる。→ 問題なし

C)

public int execute(Integer i, Integer j) {
return i + j;
}
  • 解説: 同じ名前で異なる引数の型(Integer)のため、オーバーロードの衝突はない。→ 問題なし

D)

public long execute(Integer i) {
return i.longValue();
}
  • 解説: 同じ名前で異なる引数の型(Integer)のため、オーバーロードの衝突はない。→ 問題なし

E)

public void execute(int m, int n) {
int o = m + n;
}
  • 解説: 同じ名前と引数の型(int)で引数の数が同じため、オーバーロードの衝突が起きる。→ コンパイルエラー

F)

public int execute(int x, int y) {
return x + y;
}
  • 解説: 同じ名前と引数の型(int)で引数の数が同じため、オーバーロードの衝突が起きる。→ コンパイルエラー

G)

public int execute(long l, long m) {
return (int)l + m;
}
  • 解説: 引数の型が異なるため、別のメソッドとして扱われる。→ 問題なし

コンパイルエラーになる選択肢

これらの選択肢がコンパイルエラーを引き起こします。したがって、正しい選択肢は A, E, F です。

前の問題へ SE17_B-33

次の問題へ SE17_B-35

対象資格:Java SE17 認定資格