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

Java 9 อนุญาตให้มี private method หรือ private static method ใน interface ได้หรือไม่

ใช่ ใน Java 9 เราสามารถมี private methods หรือ private static methods ใน interface ได้ ใช้เพื่อกำจัดโค้ดซ้ำ (code redundancy) เมธอด private เข้าถึงได้เฉพาะภายใน interface นั้นๆ ไม่สามารถเข้าถึงหรือสืบทอดจาก interface ไปยัง interface หรือ class อื่นได้

ไวยากรณ์

interface <interface-name> {
    private static void methodName() {
        // some statements
    }
    private void methodName() {
        // some statements
    }
}

ตัวอย่างการใช้งาน

interface Java9Interface {
    public abstract void method1();
    
    public default void method2() {
        method4();
        method5();
        System.out.println("Inside default method");
    }
    
    public static void method3() {
        method5(); // static method เรียก static method อื่น
        System.out.println("Inside static method");
    }
    
    private void method4() { // private method
        System.out.println("Inside private method");
    }
    
    private static void method5() { // private static method
        System.out.println("Inside private static method");
    }
}

public class PrivateStaticMethodTest implements Java9Interface {
    @Override
    public void method1() {
        System.out.println("Inside abstract method");
    }
    
    public static void main(String args[]) {
        Java9Interface instance = new PrivateStaticMethodTest();
        instance.method1();
        instance.method2();
        Java9Interface.method3();
    }
}

ผลลัพธ์

Inside abstract method
Inside private method
Inside private static method
Inside default method
Inside private static method
Inside static method

ประโยชน์ของ private methods ใน interface

  • ซ่อนรายละเอียดการทำงานภายใน (encapsulation)
  • ลดโค้ดซ้ำระหว่าง default methods และ static methods
  • เพิ่มความปลอดภัย ไม่ให้คลาสที่ implement เข้าถึง logic ภายในได้