자바 9에서는 인터페이스(interface) 내부에 private 메서드를 정의할 수 있게 되었습니다. 자바 8에서 도입된 static 메서드와 default 메서드에 이어 등장한 이 기능은 인터페이스 자체 안에서 공통 코드를 재사용할 수 있도록 해주는 중요한 변화입니다.
기존에는 여러 default 메서드에서 동일한 로직이 필요할 때마다 코드를 반복해서 작성해야 했고, 이는 곧 코드 중복(code duplication)으로 이어졌습니다. private 메서드의 등장으로 이러한 문제가 깔끔하게 해결되었습니다.
인터페이스에서 private 메서드의 장점
- 코드 중복 제거 — 여러 default 메서드에서 반복되는 로직을 한곳에 모아 관리할 수 있습니다.
- 코드 재사성 보장 — 작성된 공통 로직을 인터페이스 내 어디서든 호출하여 재활용할 수 있습니다.
- 가독성 향상 — 불필요한 반복이 줄어들어 코드 구조가 명확해지고 유지보수가 쉬워집니다.
문법(Syntax)
interface interfacename {
private methodName(parameters) {
// statements
}
}private 메서드는 인터페이스 내부의 default 메서드나 static 메서드에서만 호출할 수 있으며, 외부 클래스나 구현체에서 직접 접근할 수 없습니다.
예제 코드
interface Test {
default void m1() {
common();
}
default void m2() {
common();
}
private void common() {
System.out.println("Tutorialspoint");
}
}
public class PrivateMethodTest implements Test {
public static void main(String args[]) {
Test test = new PrivateMethodTest();
test.m1();
test.m2();
}
}실행 결과
Tutorialspoint Tutorialspoint
위 예제처럼 두 개의 default 메서드(m1, m2)가 동일한 private 메서드(common)를 호출하는 구조로 작성하면, 출력 결과가 변경되더라도 common() 메서드 한 곳만 수정하면 되므로 유지보수 효율이 크게 향상됩니다.