Notice
Recent Posts
Recent Comments
Link
infinity : 무한한 성장가능성
모던 자바 인 액션 13. 디폴트 메서드 (내용 추가하기) 본문
자바에서 인터페이스와 관련된 메서드는 한 몸처럼 구성됨
즉, 인터페이스를 구현하는 클래스는 인터페이스에서 정의하는 모든 메서드를 구현 or 슈퍼클래스(부모클래스)의 구현을 상속받아야 함
만약, 인터페이스에 어떤 메서드를 추가한다면?
인터페이스를 상속하는 모든 클래스가 해당 메서드를 추가로 구현해야하는 문제 발생
즉, 모든 클래스에 변경이 생긴다..
위의 문제를 해결하기위해 자바 8에서는 인터페이스를 정의하는 두 가지 방법을 제공한다.
첫번째 방법)
인터테이스 내부에 정적 메서드를 사용하는 것
두번째 방법)
인터페이스의 기본 구현을 제공할 수 있도록 디폴트 메서드를 사용하는 것
디폴트 메서드란?
1) 인터페이스 안에 default라는 키워드로 시작한다.
2) 메서드 바디를 포함한다.
->디폴트 메서드 예
public interface Sized {
int size(); // 메서드
default boolean isEmpty(){ //디폴트 메서드
return size() == 0;
}
}
-> Sized 인터페이스를 구현하는 모든 클래스는 isEmpyt의 구현또한 상속받는다.
즉, 인터페이스에 디폭드 메서드를 추가하면 소스 호환성이 유지됨
( 🤔 소스 호환성이란? 코드를 고쳐도 기존 프로그램을 성공적으로 재컴파일 할 수 있음을 의미 .. )
디폴트 메서드 활용패턴
1) 선택형 메서드
2) 동작 다중 상속
(+ 내용 추가하기)