Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java) 인터페이스에서 정적 메서드 정의하고 사용하기


자바(Java) 8부터는 인터페이스 내부에 정적(static) 메서드를 직접 정의할 수 있습니다. 정적 메서드는 객체 생성 없이 인터페이스 이름을 통해 바로 호출할 수 있으며, 유틸리티성 기능을 인터페이스 안에 함께 제공할 때 유용하게 활용됩니다.

아래 예제를 통해 인터페이스에서 정적 메서드를 구현하는 방법을 살펴보겠습니다.

예제 코드

interface my_interface{
    static void static_fun(){
        System.out.println("In the newly created static method");
    }
    void method_override(String str);
}
public class Demo_interface implements my_interface{
    public static void main(String[] args){
        Demo_interface demo_inter = new Demo_interface();
        my_interface.static_fun();
        demo_inter.method_override("In the override method");
    }
    @Override
    public void method_override(String str){
        System.out.println(str);
    }
}

실행 결과

In the newly created static method
In the override method

코드 설명

위 코드의 동작 과정을 단계별로 살펴보면 다음과 같습니다.

  • 인터페이스 정의: my_interface 안에 static_fun()이라는 정적 메서드를 선언하고, 본문(메서드 몸체)이 없는 추상 메서드 method_override(String str)도 함께 정의합니다.
  • 구현 클래스 작성: Demo_interface 클래스가 implements 키워드를 사용해 my_interface 인터페이스를 구현합니다.
  • main 메서드 실행: Demo_interface의 인스턴스를 생성한 뒤, 정적 메서드는 인터페이스 이름으로 직접 호출(my_interface.static_fun())하고, 일반 메서드는 생성된 객체를 통해 호출합니다.
  • @Override 어노테이션: 인터페이스의 추상 메서드를 재정의했음을 명시하며, 이 메서드는 매개변수로 전달받은 문자열을 콘솔에 그대로 출력합니다.

주의할 점

인터페이스의 정적 메서드는 반드시 인터페이스이름.메서드명() 형태로만 호출해야 하며, 구현 클래스의 객체를 통해서는 호출할 수 없습니다. 또한 정적 메서드는 구현 클래스에 상속되지 않기 때문에, 구현 클래스에서 같은 시그니처의 메서드를 새로 정의하더라도 이는 오버라이드가 아니라 완전히 별개의 새로운 메서드로 취급됩니다.