Object-Oriented – 71

      在〈Object-Oriented – 71〉中尚無留言

Q001

NO.2 Given:
public interface InterfaceOne {
    void printOne();
}
Which three classes successfully override printOne()? (Choose three.)
A.
public abstract class TestClass implements InterfaceOne {
    public abstract void printOne();
}
B.
public class TestClass implements InterfaceOne {
    private void printOne() {
        System.out.println("one");
    }
}
C.
public class TestClass implements InterfaceOne {
    public void printOne() {
        System.out.println("one");
    }
}
D.
public abstract class TestClass implements InterfaceOne {
    public void printOne() {
        System.out.println("one");
    }
}
E.
public abstract class TestClass implements InterfaceOne {
    public String printOne() {
        return "one";
    }
}
A. Option A
B. Option B
C. Option C
D. Option D
E. Option E
F. Option F


Answer: ACD
  • 介面的方法預設為 public abstract,所以實作時必須是 public

  • 覆寫的方法必須 相同方法名稱、參數列表與回傳型態

  • 訪問修飾詞不能更嚴格(例如不能從 public 改成 private)。

Q002

NO.3 Given:
public interface ExampleInterface { }
Which two statements are valid to be written in this interface? (Choose two.)
A. public abstract void methodB();
B. final void methodG(){System.out.println("G");}
C. private abstract void methodC();
D. public String methodD();
E. public int x;
F. final void methodE();
G. public void methodF(){System.out.println("F");}


Answer: AD

注意

E 是錯誤的。

如果是 int x=10; 有初始化,則會自動轉成 public static final int x=10; 是正確的。

✅ 方法:

  1. 抽象方法(abstract method)(預設為 public abstract,可省略修飾詞)

  2. default 方法(帶實作,必須使用 default 修飾)

  3. static 方法(帶實作,使用 static 修飾)

  4. private 方法(Java 9 以後允許用於輔助 default/static 方法)

❌ 不允許:

  • final 方法(不能 override,不符合介面用途)

  • 實例變數(只能是 public static final 常數)

  • 抽象的 private 方法(不合法)

  • 帶實作的方法沒有 defaultstatic 修飾詞 → 編譯錯誤

🔒 底下內容僅限會員閱讀。

立即登入

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *