[Day 5| Java] 인터페이스 static / private

y♡ding·2024년 10월 18일
0

데브코스 TIL

목록 보기
26/163

📌 인터페이스의 static 메서드

static 메서드는 인터페이스 자체와 연관된 동작을 제공하기 위해 사용되며, 객체 생성 없이 호출할 수 있다.

🤞🏻 특징

  1. 인터페이스 이름으로 호출: 클래스의 static 메서드처럼, 인터페이스의 static 메서드는 인터페이스 이름을 통해서만 호출할 수 있다. 객체를 통해 호출하는 것이 아니라, 인터페이스와 직접적으로 관련된 동작을 제공한다.
  2. 오버라이딩 불가: static 메서드는 인터페이스를 구현하는 클래스에서 오버라이딩할 수 없다. 따라서 각 클래스에 상관없이 인터페이스 자체에 고정된 동작을 제공한다.

예시 코드

interface InterA {
    void method1();
    
    // 인터페이스의 static 메서드
    static void staticMethod() {
        System.out.println("staticMethod 호출");
    }
}

public class InterfaceMainEx07 {
    public static void main(String[] args) {
        // 인터페이스 이름으로 static 메서드 호출
        InterA.staticMethod();  // 출력: "staticMethod 호출"
    }
}
  • InterA 인터페이스를 구현한 클래스가 존재하더라도, staticMethod는 오직 인터페이스 자체로만 호출된다.
  • static 메서드는 클래스나 객체 상태와 무관하며, 인터페이스에 고정된 동작을 정의한다.

📌 인터페이스의 private 메서드

🤞🏻 특징

  • 인터페이스 내에서만 사용되며, 외부에서 접근할 수 없다.
  • 디폴트 메서드정적 메서드중복된 코드를 피하기 위해 내부적으로 호출할 수 있다.
  • 인터페이스 내부의 코드 재사용을 위해 사용되며, 외부에 노출하지 않아야 하는 보조적인 동작을 정의할 때 유용하다.

예시 코드

interface InterA {
    void method1();
    
    // 디폴트 메서드
    default void method2() {
        System.out.println("method2 호출");
        method3();  // private 메서드 호출
    }
    
    // private 메서드 (내부적으로만 사용됨)
    private void method3() {
        System.out.println("method3 호출");
    }
}

class ClassA implements InterA {
    public void method1() {
        System.out.println("method1 호출");
    }
}

public class InterfaceMainEx08 {
    public static void main(String[] args) {
        ClassA a = new ClassA();
        a.method1();  // 출력: "method1 호출"
        a.method2();  // 출력: "method2 호출" -> "method3 호출"
    }
}

0개의 댓글

관련 채용 정보