[작성일: 2023. 01. 31]
목차
디폴트 메서드, static 메서드
- 인터페이스에 디폴트 메서드, static 메서드 추가 (JDK 1.8부터)
- 인터페이스에 새로운 메서드(추상 메서드)를 추가하기 어려움.
- 해결책: 디폴트 메서드(default method)
- 디폴트 메서드는 인스턴스 메서드(인터페이스 원칙 위반, 추상메서드가 아닌 예외상황 발생)
interpace MyInterface {
void method();
void newMethod(); // 추상메서드
//기존에 있던 인터페이스들이 이 추상메서드가 추가되면서 전부 수정하는 번거로움이 있음.
}
// ⬇️
interface MyInterface {
void method();
default void newMethod() {} // 추상메서드가 아니라 몸통이 있음.
}
메서드명 | 설명 |
default | - 메서드를 인터페이스가 만드는 것. - 구현할 때 다시 만들기 가능. - 라이브러리 업데이트 때문에 생김. |
static | - 구현한 클래스의 객체화 필요없이 호출 가능함. |
디폴트 메서드가 기존의 메서드와 충돌할 때의 해결책
1. 여러 인터페이스의 디폴트 메서드 간의 충돌
- 인터페이스를 구현한 클래스에서 디폴트 메서드를 오버라이딩 해야 함.
2. 디폴트 메서드의 조상 클래스의 메서드 간의 충돌
- 조상 클래스의 메서드(우선권)가 상속되고, 디폴트 메서드는 무시됨.
➡️ ⭐직접 오버라이딩 하면 해결됨.
🐣 해당 게시글은 자바의 정석(남궁성 님) 영상으로 함께 공부하며 요약/정리한 글입니다.
🐣 입문 개발자가 작성한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.