Given:



interface Readable {

    public void readBook();

    public void setBookMark();
}

abstract class Book implements Readable { // line n1

    public void readBook() {
    }
    // line n2
}

class EBook extends Book{ // line n3
    public void readBook(){
        
    }

    // line n4
}

Which options enable the code to compile?

A.
Replace the code fragment at line n1 with:

class Book implements Readable {

B.
At line n2 insert:

public abstract void setBookMark();

C.
Replace the code fragment at line n3 with:

abstract class EBook extends Book{

D.
At line n4 insert:

public void setBookMark() { }

題解

在尚未修改任何程式的時候,EBook類別會因為沒有實作出Readable介面的setBookMark方法而發生編譯錯誤。

選項A,將抽象類別Book改成非抽象類別。如此一來Book類別一定要實作出Readable介面的所有方法,會造成編譯錯誤。

選項B,在Book抽象類別內新增setBookMark抽象方法,在EBook類別內依然沒有將這個抽象方法實作出來,所以還是一樣會發生編譯錯誤。

選項C,將EBook類別改成抽象類別,如此一來EBook類別內不需實作出Readable介面的所有方法也沒關係。

選項D,在EBook內實作出setBookMark方法,使得Readable介面的所有方法都被實作完成。