안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
부모 인터페이스에 디폴트 메서드가 정의되어 있을 경우,
자식 인터페이스에서 디폴트 메서드를 사용하는 방법은 아래 세 가지가 있습니다.
1. 디폴트 메서드를 단순히 상속만 받는다.
2. 디폴트 메서드를 재정의(@Override)해서 실행 내용을 변경한다.
3. 디폴트 메서드를 추상 메서드로 재선언한다.
이러한 부모 인터페이스가 있다고 할 때.
public interface ParentInterface {
public void method1();
public default void method2() { /*실행문*/ }
}
ChildInterface1 은 ParentInterface를 상속하고
자신의 추상 메서드인 method()3을 선언한다고 하면,
public interface ChildInterface1 extends ParentInterface {
public void method3();
}
ChildInterface1을 구현하는 클래스는 method1() 과 method3()의 실체 메서드를 가지고 있어야 하고,
ParentInterface의 method2()를 호출할 수 있습니다.
public class Example {
public static void main(String[] args) {
ChildInterface1 ci1 = new ChildInterface1() {
@Override
public void method1() { /*실행문*/ }
@Override
public void method3() { /*실행문*/ }
};
ci1.method1();
ci1.method2(); //ParentInterface의 method2() 호출
ci1.method3();
}
}
2번째로 ChildInterface2는 ParentInterface를 상속하고 ParentInterface의 디폴트 메서드인 method2()를 재정의하고, 자신의 추상 메서드인 method3()을 선언한다고 하면,
public interface ChildInterface2 extends ParentInterface {
@Override
public default void method2() { /*실행문*/ }
public void method3();
}
이 경우에도 ChildInterface2 인터페이스를 구현하는 클래스는 method1()과
method3()의 실체 메서드를 가지고 있어야하며 ChildInterface2에서 재정의한 method2()를 호출할 수 있습니다.
public class DefaultMethodExtendsExample {
public static void main(String[] args) {
ChildInterface2 ci2 = new ChildInterface2() {
@Override
public void method1() { /*실행문*/ }
@Override
public void method3() { /*실행문*/ }
};
ci2.method1();
ci2.method2(); //ChildInterface2의 method2() 호출
ci2.method3();
}
}
마지막으로 ChildInterface3 은 ParentInteface를 상속하고 ParentInterface의 디폴트 메서드인 method2()를 추상 메서드로 선언하고, 자신의 추상 메서드인 method3()을 선언한다고 하면,
public interface ChildInterface3 extends ParentInterface {
@Override
public void method2();
public void method3();
}
'자바' 카테고리의 다른 글
JAVA 자바 중첩 클래스: 인스턴스 멤버 클래스, 정적 멤버 클래스, 로컬 클래스 (0) | 2017.03.13 |
---|---|
JAVA - 중첩 클래스와 중첩 인터페이스의 개념 (0) | 2017.03.13 |
JAVA 자바 디폴트 메서드와 인터페이스 확장 - 디폴트 메서드의 필요성 (0) | 2017.03.13 |
JAVA 자바 인터페이스 상속 (0) | 2017.03.13 |
JAVA 자바 인터페이스 강제 타입 변환 Casting 과 객체 타입 확인 instancof (0) | 2017.03.13 |