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()