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

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

問題

次の(1)から(5)のコードで、Calc クラスのメソッドを呼び出せるのはどれですか。(2つ選択)

public class Main {
	public static void main(String[] args) {
		Calc c = new Calc();
		Calc.add(4, 2);   //(1)
		Calc.divide(4, 2);   //(2)
		Calc.multiply(4, 2);   //(3)
		Calc.subtract(4, 2);   //(4)
		Calc.remainder(4, 2);   //(5)
	}
}

class Calc {
	static int multiply(int a, int b) {
		return a * b;
	}

	private static int divide(int a, int b) {
		return a / b;
	}

	public static int add(int a, int b) {
		return a + b;
	}

	public int subtract(int a, int b) {
		return a - b;
	}

	protected int remainder(int a, int b) {
		return a % b;
	}
}

選択肢

A)(3)

B)(5)

C)(2)

D)(4)

E)(1)

解答

A)(3)

B)(5)

C)(2)

D)(4)

E)(1)

解説

各選択肢の評価

  • (1) Calc.add(4, 2);:
    • add メソッドは public static です。したがって、Calc クラスから直接呼び出せます。→ 呼び出せる
  • (2) Calc.divide(4, 2);:
    • divide メソッドは private static です。Calc クラスの外からは呼び出せません。→ 呼び出せない
  • (3) Calc.multiply(4, 2);:
    • multiply メソッドは static ですが、アクセス修飾子が指定されていないため、デフォルト(パッケージプライベート)です。Main クラスが Calc クラスと同じパッケージにあれば呼び出せますが、通常はパッケージ外からは呼び出せません。→ 呼び出せる
  • (4) Calc.subtract(4, 2);:
    • subtract メソッドは public ですが、static ではありません。Calc のインスタンスを介して呼び出す必要がありますが、ここではインスタンスメソッドとして呼び出していないため、呼び出せません。→ 呼び出せない
  • (5) Calc.remainder(4, 2);:
    • remainder メソッドは protected ですが、static ではありません。Main クラスが Calc クラスと同じパッケージにある場合は呼び出せる可能性がありますが、一般的には呼び出せません。→ 呼び出せない

結論

したがって、Calc クラスのメソッドを呼び出せるのは以下の2つです。

  • (1) Calc.add(4, 2);
  • (3) Calc.multiply(4, 2); (ただし、同じパッケージである必要があります)

最終的に選択肢は E)(1)A)(3) です。

前の問題へ SE17_B-56

次の問題へ SE17_B-58

対象資格:Java SE17 認定資格