SCJP的implement的問題?

Which two classes correctly implement both the java.lang.Runnable

and the java.lang.Clonable interfaces? (Choose two.)

A. public class Session

implements Runnable, Clonable {

public void run();

public Object clone();

}

B. public class Session

extends Runnable, Clonable {

public void run() { / do something */ }

public Object clone() { / make a copy */ }

}

C. public class Session

implements Runnable, Clonable {

public void run() { / do something */ }

public Object clone() { /* make a copy */ }

}

D. public abstract class Session

implements Runnable, Clonable {

public void run() { / do something */ }

public Object clone() { /*make a copy */ }

}

E. public class Session

implements Runnable, implements Clonable {

public void run() { / do something */ }

public Object clone() { / make a copy */ }

}

Answer: CD

請問一下為什麼選項B錯誤呢?

謝謝!

還有

11.classA {

12. public void process() { System.out.print(”A “); } }

13. class B extends A {

14. public void process() throws RuntimeException {}}

這樣有會overloading嗎?謝謝!

已更新項目:

1. public interface A {

2. String DEFAULT_GREETING = “Hello World”;

3. public void method1();

4. }

A programmer wants to create an interface called B that has A as its parent.

A. public interface B extends A { }

Answer: A

如果說不可以用extends interface

為什麼這題答案會是A呢?

難道只因為parent嗎?

謝謝你的回答!

2 個解答

評分
  • 1 0 年前
    最佳解答

    public class Session extends Runnable, Clonable {...} 是錯誤的

    因為 extends 是繼承之用

    而 Runnable 以及 Clonable 是介面而非實際的 class

    正確的繼承應如 public class Session extends Thread implements Clonable

    其中的 Thread 是(有實作 Runnable 介面) 的 class

    注意Java是單繼承的

    所以 class C extends C1, C2 一定是錯的

    class B extends A { public void process() throws RuntimeException {} }

    是可行的 (會 override A 的 process())

    因為它丟出的 Exception 是 un-checked 的 RuntimeException

    但如果是

    class B extends A { public void process() throws IOException {} }

    即會 compile 失敗

    因為 override 的 method 不能丟出超過原 method 指定會丟出的 Exception

    2006-06-12 12:25:59 補充:

    如下面的大大所說interface 是繼承其他的 interface因你的範例中皆是 class 宣告所以就沒有提到 interface 宣告注意 interface 可以多繼承亦即 public interface I extends I1, I2 是可以的

    參考資料: Java language specification
  • 1 0 年前

    回答你補充的問題....

    Interface 是可以被 Interface型態繼承(extends)的~

    而一般 class 類別則需要實作(implements)~

還有問題?馬上發問,尋求解答。