인터페이스는 상속
, 다른 (일반, 추상)클래스와 달리 인터페이스는 다중 상속
도 허용이 된다.
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