ใหม่ใน Java 9: Private Methods ใน Interface
Java 9 อนุญาตให้ interface มี private และ private static methods ช่วยลดโค้ดซ้ำใน default/static methods
ตัวอย่าง
interface MyInterface {
// Abstract method
void multiply(int a, int b);
// Default method ใช้ private method
default void add(int a, int b) {
sub(a, b); // เรียก private method
System.out.println("Default method result: " + (a + b));
}
// Private instance method
private void sub(int a, int b) {
System.out.println("Private method result: " + (a - b));
}
// Private static method
private static void div(int a, int b) {
System.out.println("Private static method result: " + (a / b));
}
}
public class MyImpl implements MyInterface {
@Override
public void multiply(int a, int b) {
System.out.println("Abstract method result: " + (a * b));
}
public static void main(String[] args) {
MyInterface obj = new MyImpl();
obj.multiply(11, 34);
obj.add(78, 0);
// obj.sub(1, 2); // compile error - private
// MyInterface.div(10, 2); // compile error - private static
}
}
ผลลัพธ์
Abstract method result: 374 Private method result: 78 Default method result: 78
กฎสำคัญ
- Private method เรียกได้ เฉพาะภายใน interface เดียวกัน
- Private instance method เรียกจาก default method ได้
- Private static method เรียกจาก default/static method ได้
- ไม่สามารถ override** private method ใน implementing class
- ช่วย share logic ระหว่าง default methods โดยไม่เปิดเผยต่อ implementing classes
ประโยชน์
- ลด code duplication ใน default methods
- Encapsulation ดีขึ้น - ซ่อน implementation details
- รักษา binary compatibility