小狼
Lv 7
小狼 發問時間: 電腦與網際網路程式設計 · 1 0 年前

幫我看看這題為什麼錯~?

Given the class definition:

-------------------------------------------------

abstract class Transaction implements Runnable{}

class Deposit extends Transaction{

protected void process(){

undo(3)

}

void undo(int i){

System.out.println("do noting");

}

}

-------------------------------------------------

What will happen if we attempted to compile the code?

已更新項目:

兩個人答得一樣好…交付投票吧= ="

3 個解答

評分
  • 1 0 年前
    最佳解答

    abstract class Transaction implements Runnable{}

    類別 Transaction 實作 Runnable

    class Deposit extends Transaction

    類別 Deposit 繼承 Transaction

    說明:

    由於類別Transaction是屬於虛擬類別,所以implements Runnable時

    可以不用實作 Runnable

    而類別 Deposit 繼承至 Transaction 它必須要實作 Runnable

    也就是要實作 Run 涵數

    但 Deposit 並未實作 Run涵數

    所以在編譯時會發生錯誤

  • 1 0 年前

    看來兩個回答者英文不錯嘛

  • tomy
    Lv 4
    1 0 年前

    問題就出在Deposit沒有實作public void run()這個method。

    run()的原始定義在Runnable中,也是此介面所定義的唯一(抽象)方法。雖然 Deposit沒有implements Runnable,但請注意,它有extends Transaction,Transaction本身是宣告成implements Runnable,所以run() method自然必須被實作在Deposit中了! 不然的話,就要把Deposit也定義成abstract class。

    希望對你有所幫助!

    參考資料: me
還有問題?馬上發問,尋求解答。