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; 是正確的。
✅ 方法:
-
抽象方法(abstract method)(預設為
public abstract,可省略修飾詞) -
default方法(帶實作,必須使用default修飾) -
static方法(帶實作,使用static修飾) -
private方法(Java 9 以後允許用於輔助 default/static 方法)
❌ 不允許:
-
final方法(不能 override,不符合介面用途) -
實例變數(只能是
public static final常數) -
抽象的
private方法(不合法) -
帶實作的方法沒有
default或static修飾詞 → 編譯錯誤
