[Java] 인터페이스 - 다중 구현

정석·2024년 2월 1일

Java

목록 보기
35/39
post-thumbnail

김영한의 자바 강의를 듣고 정리하였습니다.

원래 자바에선 다중 상속이 불가능하다. 부모의 메서드에서 같은 이름의 메서드일 경우 어떤 메서드를 호출해야할지 모르기 때문이다. 하지만 인터페이스는 다중 구현이 가능하다.

인터페이스로 이루어진 부모 클래스는 추상 메서드를 가지기 때문에 어차피 이름이 같아도 오버라이딩 우선권에 따라 자식 클래스에서 오버라이딩된 메서드가 실행되기 때문이다. (결국 자식 메서드만 실행됨)

예제

  • 인터페이스 A 와 B
public interface InterfaceA {
	void methodA();
    void methodCommon();
}
public interface InterfaceB {
	void methodB();
    void methodCommon();
}

두 개의 인스턴스에서 methodCommon 추상 메서드의 이름이 겹치고 있다.

해당 인터페이스를 구현한 자식 클래스는 아래와 같다.

  • 자식 클래스
public class Child implements InterfaceA, InterfaceB {
	@Override
    public void methodA() {
    	System.out.println("Child.methodA");
    }
    
    @Override
    public void methodB() {
    	System.out.println("Child.methodB");
    }
    
    @Override // 이름이 같기 때문에 한 번만 오버라이딩하여 구현하면 됨.
    public void methodCommon() {
    	System.out.println("Child.methodCommon");
    }
    
  • Main
public class Main {
	public static void main(String[] args) {
    	InterfaceA a = new Child();
        a.methodA();
        a.methodCommon();
        
        Interface b = new Child();
        b.methodB();
        b.methodCommon();
    }
}
  • 결과
 Child.methodA
 Child.methodCommon
 Child.methodB
 Child.methodCommon

오버라이딩했기 때문에 오버라이딩된 메서드의 우선권으로 자식 클래스의 메서드가 실행된다.

0개의 댓글