Given:

and the code fragment:

Which modification enables the code fragment to print Happy Journey!?

A. Replace line n1 with public void ride() throws FuelNotAvailException {
B. Replace line n1 with protected void ride() throws Exception {
C. Replace line n2 with void ride() throws Exception {
D. Replace line n2 with private void ride() throws FuelNotAvailException {

題解

FuelNotAvailException繼承Exception,屬於checked exception。

題目原先的程式會在line n2編譯失敗,因為SolarVehicle的ride方法覆寫了Vehicle的ride方法,Vehicle的ride方法會拋出FuelNotAvailException,所以SolarVehicle的ride方法只能不拋出例外、拋出unhecked exception或是拋出FuelNotAvailException或其子例外。

選項A,對編譯問題沒有幫助。

選項B,正確。

選項C,對編譯問題沒有幫助。

選項D,可見度需要大於等於default,使用private會編譯錯誤。