ใช่ ใน 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 ภายในได้