Notice
Recent Posts
Recent Comments
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

8.9 인터페이스 상속 본문

이것이 자바다/08 인터페이스

8.9 인터페이스 상속

빌드이너프 2024. 4. 3. 20:19

인터페이스도 다른 인터페이스를 상속할 수 있으며, 클래스와는 달리 다중 상속을 허용한다

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