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

Java에서 인터페이스의 기본(Default) 메소드를 재정의하는 방법

Java에서 인터페이스(Interface)는 클래스와 유사하지만, 오직 추상 메소드와 final이며 static인 필드만 포함할 수 있다는 점이 다릅니다.

그러나 Java 8부터는 인터페이스에 정적(static) 메소드와 기본(default) 메소드가 도입되었습니다. 다른 추상 메소드와 달리 이 메소드들은 기본 구현(메소드 본문)을 가질 수 있습니다. 따라서 인터페이스에 기본 메소드가 존재하더라도, 해당 인터페이스를 이미 구현하고 있는 클래스에서 반드시 재정의(오버라이드)할 필요는 없습니다.

즉, 구현 클래스의 객체를 통해 인터페이스의 기본 메소드에 그대로 접근하여 사용할 수 있습니다.

기본 메소드 사용 예제

interface MyInterface{  
   public static int num = 100;
   public default void display() {
      System.out.println("display method of MyInterface");
   }
}
public class InterfaceExample implements MyInterface{
   public static void main(String args[]) {
      InterfaceExample obj = new InterfaceExample();
      obj.display();
   }
}

실행 결과

display method of MyInterface

기본 메소드 재정의하기

기본 메소드는 선택 사항이지만, 필요에 따라 구현 클래스에서 인터페이스의 기본 메소드를 자유롭게 재정의(오버라이드)할 수 있습니다. 재정의하면 인터페이스의 기본 구현 대신 클래스에서 작성한 코드가 실행됩니다.

재정의 예제

interface MyInterface{  
   public static int num = 100;
   public default void display() {
      System.out.println("display method of MyInterface");
   }
}
public class InterfaceExample implements MyInterface{
   public void display() {
      System.out.println("display method of class");
   }
   public static void main(String args[]) {
      InterfaceExample obj = new InterfaceExample();
      obj.display();
   }
}

실행 결과

display method of class

정리

Java 8 이상에서 인터페이스의 기본 메소드는 구현 클래스에서 재정의해도 되고, 하지 않아도 됩니다. 재정의하지 않으면 인터페이스에 정의된 기본 구현이 실행되며, 재정의하면 클래스의 구현이 우선적으로 호출됩니다.