Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Static Method ใน Interface (Java 8+)

Static Methods ใน Interface (Java 8+)

Interface สามารถมี static method ได้ เรียกผ่าน interface name โดยตรง ไม่ต้อง implement

ตัวอย่าง


interface MyInterface {
    // Static method
    static void staticMethod() {
        System.out.println("Static method in interface");
    }
    
    // Abstract method (ต้อง implement)
    void instanceMethod(String str);
    
    // Default method (optional override)
    default void defaultMethod() {
        System.out.println("Default method");
    }
}

public class DemoImpl implements MyInterface {
    @Override
    public void instanceMethod(String str) {
        System.out.println("Implemented: " + str);
    }
    
    public static void main(String[] args) {
        // เรียก static method ผ่าน interface
        MyInterface.staticMethod();
        
        // ใช้ instance method
        DemoImpl obj = new DemoImpl();
        obj.instanceMethod("Hello");
        obj.defaultMethod();
    }
}

ผลลัพธ์

Static method in interface
Implemented: Hello
Default method

คุณสมบัติสำคัญ

  • Static method ใน interface ไม่ถูกสืบทอด (not inherited) โดย implementing classes
  • ต้องเรียกผ่าน InterfaceName.staticMethod() เสมอ
  • ไม่สามารถ override ได้ใน implementing class (แต่สามารถ declare method ชื่อเดียวกันได้ - เป็น method ใหม่)
  • ช่วยจัดกลุ่ม utility methods ที่เกี่ยวข้องกับ interface ไว้ที่เดียว

Static vs Default Methods

คุณสมบัติStatic MethodDefault Method
การเรียกInterfaceName.method()instance.method()
Overrideไม่ได้ (hide only)ได้ (optional)
เข้าถึง thisไม่ได้ได้
สืบทอดไม่ใช่

กรณีใช้งาน

  • Factory methods: List.of(), Stream.of()
  • Utility methods: Comparator.naturalOrder(), Predicate.isEqual()
  • Helper methods สำหรับ default methods