Java에서 다중 인터페이스 구현

Mohammad Irfan 2023년10월12일
  1. Java에서 다중 인터페이스 구현
  2. 인터페이스는 Java에서 다중 인터페이스를 확장합니다
Java에서 다중 인터페이스 구현

이 자습서에서는 클래스가 Java에서 여러 인터페이스를 구현하는 방법을 소개하고 주제를 이해하기 위한 몇 가지 예제 코드를 나열합니다.

Java에서 인터페이스는 추상 메소드만 가질 수 있다는 점을 제외하고는 클래스와 유사합니다. 인터페이스는 클래스의 청사진으로 알려져 있으며 인터페이스를 구현하는 클래스는 모든 추상 메서드에 대한 구현을 제공하거나 추상 자체를 선언해야 합니다.

Java에서 클래스는 단일 클래스만 확장할 수 있지만 여러 인터페이스를 구현할 수 있습니다. 그래서 누군가가 당신에게 묻는다면 클래스가 다중 인터페이스를 구현할 수 있습니까? 그런 다음 YES라고 말합니다.

개념을 이해하기 위해 몇 가지 코드 예제부터 시작하겠습니다. 다중 인터페이스 구현의 일반적인 구조입니다.

class A implements B, C, D
....Z

여러 인터페이스를 구현하는 Java 컬렉션의 기존 클래스는 다음과 같습니다.

개발자 코드 외에도 JDK 소스를 보면 Java가 ArrayList, HashMap 클래스 등과 같은 여러 인터페이스 구현을 사용했음을 알 수 있습니다.

ArrayList<E>는 여러 인터페이스를 구현합니다

public class ArrayList<E>
    extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
// Implements multiple interfaces

HashMap<K,V>는 여러 인터페이스를 구현합니다

public class HashMap<K, V> extends AbstractMap<K, V> implements Map<K, V>, Cloneable, Serializable
// Implements multiple interfaces

Java에서 다중 인터페이스 구현

Java를 사용하면 클래스가 여러 인터페이스를 구현할 수 있습니다. 따라서 원하는 만큼 구현할 수 있습니다. 이 예제에서는 3개의 인터페이스를 만든 다음 클래스를 사용하여 구현했습니다.

인터페이스로 작업하는 동안 클래스가 모든 추상 메소드를 구현하는지 확인하십시오. 3가지 인터페이스 모두의 모든 메소드를 구현한 아래의 예를 참조하십시오.

package javaexample;
interface A {
  void showA();
}
interface B {
  void showB();
}
interface C {
  void showC();
}
public class SimpleTesting implements A, B, C {
  public static void main(String[] args) {
    SimpleTesting st = new SimpleTesting();
    st.showA();
    st.showB();
    st.showC();
  }
  @Override
  public void showA() {
    System.out.println("Interface A");
  }
  @Override
  public void showB() {
    System.out.println("Interface B");
  }
  @Override
  public void showC() {
    System.out.println("Interface C");
  }
}

출력:

Interface A
Interface B
Interface C

인터페이스는 Java에서 다중 인터페이스를 확장합니다

인터페이스는 여러 인터페이스를 구현(확장)할 수도 있습니다. Java는 클래스와 같은 인터페이스를 허용하고 여러 인터페이스를 구현할 수 있습니다.

인터페이스의 경우 implements 대신 externds 키워드를 사용하여 인터페이스를 구현해야 합니다. 아래 예를 참조하십시오.

package javaexample;
interface A {
  void showA();
}
interface B {
  void showB();
}
interface C {
  void showC();
}
interface D extends A, B, C {
  void showD();
}
public class SimpleTesting implements D {
  public static void main(String[] args) {
    SimpleTesting st = new SimpleTesting();
    st.showA();
    st.showB();
    st.showC();
    st.showD();
  }
  @Override
  public void showA() {
    System.out.println("Interface A");
  }
  @Override
  public void showB() {
    System.out.println("Interface B");
  }
  @Override
  public void showC() {
    System.out.println("Interface C");
  }
  @Override
  public void showD() {
    System.out.println("Interface D");
  }
}

출력:

Interface A
Interface B
Interface C
Interface D

클래스에서 인터페이스를 구현하는 경우 추상 메소드의 구현을 제공해야 하는 것이 중요합니다. 그렇지 않으면 Java 컴파일러에서 오류가 발생합니다. 아래 예를 참조하십시오.

package javaexample;
interface A {
  void showA();
}
interface B {
  void showB();
}
public class SimpleTesting implements A, B {
  public static void main(String[] args) {
    SimpleTesting st = new SimpleTesting();
    st.showA();
    st.showB();
  }
  @Override
  public void showA() {
    System.out.println("Interface A");
  }
}

출력:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The type SimpleTesting must implement the inherited abstract method B.showB()

관련 문장 - Java Interface