[Java] interface 다중상속과 다형성

devdo·2022년 3월 5일
0

Java

목록 보기
40/56
post-thumbnail

인터페이스는 상속, 다른 (일반, 추상)클래스와 달리 인터페이스는 다중 상속도 허용이 된다.

상속

public interface 하위인터페이스 extends 상위인터페이스1 { ... }

다중상속

public interface 하위인터페이스 extends 상위인터페이스1, 상위인터페이스2 { ... }

다형성

인터페이스의 다형성은 다중상속까지 생각해야 한다.

하위 인터페이스를 구현하는 클래스는 상위인터페이스의 모든 추상메서드까지 가질 수 있다.

하위인터페이스 변수 = new 구현클래스(...);
상위인터페이스1 변수 = new 구현클래스(...);
상위인터페이스2 변수 = new 구현클래스(...);

# 예시
InterfaceC 변수 = new ClassImpl(...);
InterfaceA 변수 = new ClassImpl(...);
InterfaceB 변수 = new ClassImpl(...);

// 상위인터페이스1
public interface InterfaceA {
	public void methodA();
}    
// 상위인터페이스2
public interface InterfaceB {
	public void methodB();
}    
// 하위인터페이스 상위인터페이스 InterfaceA, InterfaceB를 상속한다.
public interface InterfaceC exends InterfaceA, InterfaceB {
	public void methodC();
}    
// 구현클래스, 상위1,2, 하위인터페이스 메서드를 override 재정의한다.
public class ClassImpl implements InterfaceC {

	@Override
	public void methodA() {
    	System.out.println("ClassImpl-methodA() 실행");
    }
    
    @Override
	public void methodB() {
    	System.out.println("ClassImpl-methodB() 실행");
    }
    
    @Override
    public void methodC() {
    	System.out.println("ClassImpl-methodC() 실행");
    }
}    

// 호출가능 메서드 확인
public class Example {

    public static void main(String[] args) {
        ClassImpl impl = new ClassImpl();
        
        InterfaceA ia = impl;
        ia.methodA();
        
        InterfaceB ib = impl;
        ia.methodB();
        
        // InterfaceC 변수는 methodA, B, C 모두 호출 가능하다!
        InterfaceC ic = impl;
        ia.methodA();
        ia.methodB();
        ia.methodC();
    }

}


출처

<이것이 자바다> 377p

profile
배운 것을 기록합니다.

0개의 댓글