Language 중급

인터페이스 private 메서드

private 메서드를 사용하여 인터페이스에서 공유 로직을 추출합니다.

✕ Java 8
interface Logger {
    default void logInfo(String msg) {
        System.out.println(
            "[INFO] " + timestamp() + msg);
    }
    default void logWarn(String msg) {
        System.out.println(
            "[WARN] " + timestamp() + msg);
    }
}
✓ Java 9+
interface Logger {
    private String format(String lvl, String msg) {
        return "[" + lvl + "] " + timestamp() + msg;
    }
    default void logInfo(String msg) {
        IO.println(format("INFO", msg));
    }
    default void logWarn(String msg) {
        IO.println(format("WARN", msg));
    }
}
이 코드에 문제가 있나요? 알려주세요.
🧩

코드 재사용

중복 없이 default 메서드 간에 로직을 공유합니다.

🔐

캡슐화

구현 세부 사항이 구현 클래스에 숨겨집니다.

🧹

DRY 인터페이스

더 이상 default 메서드 간에 복붙이 없습니다.

이전 방식
로직 중복
모던 방식
private 메서드
JDK 버전
9
난이도
중급
인터페이스 private 메서드
사용 가능

JDK 9 (2017년 9월) 이후 널리 사용 가능

Java 9는 인터페이스에서 private 메서드를 허용하여 구현 클래스에 구현 세부 사항을 노출하지 않고 default 메서드 간에 코드를 공유할 수 있습니다.

공유 𝕏 🦋 in