Given:
interface Doable {
public void doSomething(String s);
}
Which two class definitions compile?
A.
public abstract class Task implements Doable {
public void doSomethingElse(String s) {
}
}
B.
public abstract class Work implements Doable {
public abstract void doSomething(String s) {
}
public void doYourThing(Boolean b) {
}
}
C.
public class Job implements Doable {
public void doSomething(Integer i) {
}
}
D.
public class Action implements Doable {
public void doSomething(Integer i) {
}
public String doThis(Integer j) {
}
}
E.
public class Do implements Doable {
public void doSomething(Integer i) {
}
public void doSomething(String s) {
}
public void doThat(String s) {
}
}
題解
選項A,雖然Task類別沒有實作出Doable介面的doSomething方法,但是Task類別為抽象類別,因此允許未實作的方法。
選項B,抽象方法不能有程式實作區塊。
選項C,Job類別的doSomething抽象方法傳入的參數和Doable介面的doSomething方法不同,將不被認為是實作Doable介面的doSomething方法,所以Job類別會因沒有實作Doable介面的doSomething方法而無法編譯。
選項D,錯誤理由同選項C。
選項E,有成功實作出Doable介面的doSomething方法。