충분히 쌓여가는
8.9 인터페이스 상속 본문
인터페이스도 다른 인터페이스를 상속할 수 있으며, 클래스와는 달리 다중 상속을 허용한다
extends 키워드 뒤에 상속할 인터페이스들을 나열
public interface 자식인터페이스 extends 부모인터페이스1, 부모인터페이스2 {...}
자식 인터페이스의 구현 클래스는 자식 인터페이스의 메소드뿐만 아니라 부모 인터페이스의 모든 추상 메소드를 재정의해야 한다
그리고 구현 객체는 자식 및 부모 인터페이스 변수에 대입될 수 있다
자식인터페이스 변수 = new 구현클래스(...);
부모인터페이스1 변수 = new 구현클래스(...);
부모인터페이스2 변수 = new 구현클래스(...);
구현 객체가 자식 인터페이스 변수에 대입되면 자식 및 부모 인터페이스의 추상 메소드를 모두 호출할 수 있으나,
부모 인터페이스 변수에 대입되면 부모 인터페이스에 선언된 추상 메소드만 호출 가능하다
예제
package ch08.sec09;
public interface InterfaceA {
void methodA();
}
package ch08.sec09;
public interface InterfaceB {
void methodB();
}
package ch08.sec09;
public interface InterfaceC extends InterfaceA, InterfaceB {
void methodC();
}
package ch08.sec09;
public class InterfaceCImpl implements InterfaceC {
@Override
public void methodA() {
System.out.println("InterfaceImpl-methodA() 실행");
}
@Override
public void methodB() {
System.out.println("InterfaceImpl-methodB() 실행");
}
@Override
public void methodC() {
System.out.println("InterfaceImpl-methodC() 실행");
}
}
package ch08.sec09;
public class ExtendsExample {
public static void main(String[] args) {
InterfaceCImpl impl = new InterfaceCImpl();
InterfaceA ia = impl;
ia.methodA();
// ia.methodB();
System.out.println();
InterfaceB ib = impl;
// ib.methodA();
ib.methodB();
System.out.println();
InterfaceC ic = impl;
ic.methodA();
ic.methodB();
}
}
InterfaceImpl-methodA() 실행
InterfaceImpl-methodB() 실행
InterfaceImpl-methodA() 실행
InterfaceImpl-methodB() 실행
'이것이 자바다 > 08 인터페이스' 카테고리의 다른 글
8.8 다중 인터페이스 구현 (0) | 2024.04.03 |
---|---|
8.7 private 메소드 - private 메소드, private 정적 메소드 (0) | 2024.04.03 |
8.6 정적 메소드 (0) | 2024.04.03 |
8.5 디폴트 메소드 (0) | 2024.04.03 |
8.4 추상 메소드 - public abstract (0) | 2024.04.03 |