본문 바로가기

👩‍💻 BackEnd/☕️ 자바 [Java]

[Java] 자바의 정석 : 디폴트 메서드와 static 메서드

  • 인터페이스에 디폴트 메서드, static 메서드 추가 가능 (JDK 1.8 부터) 
  • 인터페이스에 새로운 메서드(추상메서드)를 추가하기 어려움. 
  • 디폴트 메서드는 인스턴스 메서드 (인터페이스 원칙 위반) 

새로운 메서드를 추가한다는 말은 추상메서드를 추가한다는 말과 동일한데 

이를 구현한 클래스에서는 추상 메서드를 반드시 구현해야하는 문제가 생김. 

 

해결책 -> 디폴트 메서드 (default method) 

 

interface MyInterface {
	void methoe(); 
	default void newMethod(){} // default 반드시 명시, 구현부 부분 작성해야함. 
}

 

  • 디폴트 메서드가 기존의 메서드와 충돌할 때의 해결책 
    1. 여러 인터페이스의 디폴트 메서드 간의 충돌
      • 인터페이스를 구현한 클래스에서 디폴트 메서드를 오버라이딩 해야한다. (필요한 쪽으로 선택해서 오버라이딩을 하면 됨) 
    2. 디폴트 메서드와 조상 클래스의 메서드 간의 충돌
      • 조상 클래스의 메서드가 상속되고, 디폴트 메서드는 무시된다. 
  • 따라서, 그냥 직접 오버라이딩을 해서 해결하면 된다. 

 

✅ 하루 30분씩 6장 30분, 7장 30분 씩 복습하기!