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

Java에서 인터페이스 메서드 호출하는 방법 총정리

Java 프로그램에서 인터페이스의 메서드를 호출하려면, 먼저 해당 인터페이스를 구현한 클래스의 객체(인스턴스)를 생성해야 합니다. 인터페이스 자체는 직접 인스턴스화할 수 없기 때문에, 구현 클래스 객체를 통해 메서드를 호출하는 것이 기본 원리입니다.

인터페이스 정의 예제

아래 예제는 이름과 직책을 출력하는 세 개의 메서드를 가진 인터페이스입니다. 그중 하나는 default 키워드로 선언된 디폴트 메서드로, 인터페이스 내부에 실행 로직이 포함되어 있습니다. 나머지 두 개의 추상 메서드는 구현부가 없습니다.

public interface InterfaceDemo{
    default public void displayNameDefault(String name){
        System.out.println("Your name is : " + name);
    }
    public void displayName(String name);
    public void displayNameAndDesignation(String name, String designation);
}

인터페이스 구현 클래스 작성

아래 클래스는 implements 키워드를 사용하여 위 인터페이스를 구현합니다. 디폴트 메서드가 아닌 두 개의 추상 메서드에 대해서는 반드시 구현 코드를 제공해야 하며, 아래와 같이 각 메서드의 구현부를 작성했습니다.

public class InterfaceDemoImpl implements InterfaceDemo{
    public void displayName(String name) {
        System.out.println(name);
    }
    public void displayNameAndDesignation(String name, String designation) {
        System.out.println("Name:" + name + "\n"+ "Designation:" + designation);
    }
}

인터페이스 메서드 호출하기

이제 구현 클래스의 객체를 생성하고, 다형성(polymorphism)을 활용하여 인터페이스 타입의 참조 변수에 할당한 뒤 각 메서드를 호출할 수 있습니다.

public class CallInterfaceMethod {
    public static void main(String args[]){
        InterfaceDemo demo = new InterfaceDemoImpl();
        demo.displayName("Adithya");
        demo.displayNameAndDesignation("Adithya", "Java Developer");
        demo.displayNameDefault("Adithya");
    }
}

위 코드에서 new InterfaceDemoImpl()을 통해 구현 클래스를 인스턴스화하고, 이를 인터페이스 타입 변수 demo에 담았습니다. 이후 인터페이스에 정의된 모든 메서드를 객체를 통해 순차적으로 호출합니다.

실행 결과

Adithya
Name:Adithya
Designation:Java Developer
Your name is : Adithya

핵심 정리

  • 인터페이스는 직접 객체를 생성할 수 없으며, 반드시 구현 클래스를 인스턴스화해야 합니다.
  • 구현 클래스는 implements 키워드로 인터페이스를 상속받고, 추상 메서드를 모두 오버라이딩해야 합니다.
  • Java 8부터 도입된 default 메서드는 인터페이스 내부에 구현 로직을 포함할 수 있어 별도 오버라이딩 없이도 호출 가능합니다.
  • 인터페이스 타입 참조 변수를 사용하면 다형성을 활용한 유연한 코드 작성이 가능합니다.