- 인터페이스에 디폴트 메서드, static 메서드 추가 가능 (JDK 1.8 부터)
- 인터페이스에 새로운 메서드(추상메서드)를 추가하기 어려움.
- 디폴트 메서드는 인스턴스 메서드 (인터페이스 원칙 위반)
새로운 메서드를 추가한다는 말은 추상메서드를 추가한다는 말과 동일한데
이를 구현한 클래스에서는 추상 메서드를 반드시 구현해야하는 문제가 생김.
해결책 -> 디폴트 메서드 (default method)
interface MyInterface {
void methoe();
default void newMethod(){} // default 반드시 명시, 구현부 부분 작성해야함.
}
- 디폴트 메서드가 기존의 메서드와 충돌할 때의 해결책
- 여러 인터페이스의 디폴트 메서드 간의 충돌
- 인터페이스를 구현한 클래스에서 디폴트 메서드를 오버라이딩 해야한다. (필요한 쪽으로 선택해서 오버라이딩을 하면 됨)
- 디폴트 메서드와 조상 클래스의 메서드 간의 충돌
- 조상 클래스의 메서드가 상속되고, 디폴트 메서드는 무시된다.
- 여러 인터페이스의 디폴트 메서드 간의 충돌
- 따라서, 그냥 직접 오버라이딩을 해서 해결하면 된다.
✅ 하루 30분씩 6장 30분, 7장 30분 씩 복습하기!
'👩💻 BackEnd > ☕️ 자바 [Java]' 카테고리의 다른 글
멀티 스레드와 싱글 스레드, 스레드의 IO블로킹, 쓰레드 그룹 (0) | 2024.04.11 |
---|---|
[Java] 자바의 정석 : 내부 클래스의 제어자와 접근성 / 익명 클래스 (0) | 2024.02.27 |
[Java] 자바의 정석 : 인터페이스의 장점 (0) | 2024.02.27 |
[Java] 자바의 정석 : 인터페이스와 다형성 (1) | 2024.02.27 |
[Java] 자바의 정석 : 인터페이스 (0) | 2024.02.26 |