인터페이스 - default & static method

0
  • 인터페이스에 default 메소드, static 메소드 추가 가능(JDK1.8 ~)
  • 인터페이스에 새로운 메소드(추상 메소드)를 추가하기 어려움
    ∵ 기존에 인터페이스를 구현했던 클래스들에 추상메소드를 추가하려면, 또 구현하고 변경해야함.
    ⇒ 해결책 : 디폴트 메소드(default method)
interface MyInterface {
	void method();
	default void newMethod() {}  // 디폴트 메소드 추가
}
  • 디폴트 메소드는 인스턴스 메소드(인터페이스 원칙 위반의 예외!)

  • 기존의 인터페이스가 추상메소드만 가질수 있었던 이유 = 충돌때문인데,
    디폴트 메소드가 기존의 메소드와 충돌할 때의 해결책??
    1) 여러 인터페이스의 디폴트 메소드간의 충돌
    : 인터페이스를 구현한 클래스에서 디폴트 메소드를 오버라이딩 해야한다.
    2) 디폴트 메소드와 조상 클래스의 메소드 간의 충돌
    : 조상 클래스의 메소드가 상속(우선)되고, 디폴트 메소드는 무시된다.
    → 그냥 직접 오버라이딩 하면 해결됨.

출처

  • 자바의 정석 기초편 - youtube : ch 7-40, 41
profile
백엔드를 공부하고 있습니다.

0개의 댓글