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介面的所有方法都被實作完成。