คำตอบ: ไม่ได้ ต้อง Implement ทุก Abstract Method ของ Interface มิฉะนั้นจะ Compile Error ยกเว้นจะทำให้ Class เป็น abstract หรือใช้ default method
ตัวอย่าง Error: ไม่ Implement ครบ
interface Sample {
void demoMethod1();
void demoMethod2();
void demoMethod3();
}
public class InterfaceExample implements Sample {
public void demoMethod1() {
System.out.println("Method 1");
}
public void demoMethod2() {
System.out.println("Method 2");
}
// ไม่ implement demoMethod3() -> Error
}
Compile Error
InterfaceExample.java:6: error: InterfaceExample is not abstract and does not override abstract method demoMethod3() in Sample
วิธีแก้ 3 แบบ
1. Implement ทุกเมธอด (Standard)
public class InterfaceExample implements Sample {
public void demoMethod1() { System.out.println("Method 1"); }
public void demoMethod2() { System.out.println("Method 2"); }
public void demoMethod3() { System.out.println("Method 3"); } // Implement ครบ
}
2. ทำให้ Class เป็น Abstract (ยังไม่สร้าง Object ได้)
public abstract class InterfaceExample implements Sample {
public void demoMethod1() { System.out.println("Method 1"); }
// demoMethod2, demoMethod3 ยังไม่ implement -> OK เพราะ Class เป็น Abstract
}
3. ใช้ Default Methods ใน Interface (Java 8+) - แนะนำ
interface Sample {
void demoMethod1(); // Abstract - ต้อง Implement
default void demoMethod2() { // Default - Optional
System.out.println("Default Method 2");
}
default void demoMethod3() {
System.out.println("Default Method 3");
}
}
public class InterfaceExample implements Sample {
public void demoMethod1() {
System.out.println("Method 1");
}
// demoMethod2, demoMethod3 ใช้ Default ได้เลย
public static void main(String[] args) {
InterfaceExample obj = new InterfaceExample();
obj.demoMethod1(); // Method 1
obj.demoMethod2(); // Default Method 2
obj.demoMethod3(); // Default Method 3
}
}
ผลลัพธ์
Method 1 Default Method 2 Default Method 3
สรุป
- Interface ธรรมดา (All Abstract) -> ต้อง Implement ทุกเมธอด
- อยาก Override แค่บางเมธอด -> ใช้ Default Methods ใน Interface (Java 8+)
- หรือทำ Class เป็น Abstract (แต่ไม่สามารถ new Object ได้)
- Empty Body
{}ยังนับว่า Implement แต่อาจไม่ใช่ Best Practice