7-40~41 default 메서드, static 메서드

oyeon·2021년 3월 19일
0

(완)객체지향 개념

목록 보기
37/37
  • 인터페이스에 default 메서드, static 메서드 추가 가능(JDK 1.8 부터)

default 메서드가 나온 이유

  • 인터페이스에 새로운 메서드(추상 메서드)를 추가하기 어려움
    (인터페이스 : 추상 메서드 집합)
interface Repairable{
	boolean isfinished(); // 추상 메서드
}

Repairable 인터페이스에 isfinished() 메서드를 추가하려고 할 때, 인터페이스를 상속받는 모든 클래스 내에 isfinished() 메서드를 구현해야만 됨.(매우 많은 변경이 일어나야 됨)
=> 해결책 : default method

interface Repairable{
	default boolean isfinished(){}; // Default 메서드(추상 메서드 X)
}

default 메서드는 추상 메서드가 아니므로 인터페이스 원칙을 위반했다고 볼 수 있다.

default 메서드가 기존의 메서드와 충돌할 때 해결책

  1. 여러 인터페이스의 default 메서드 간의 충돌
    • 인터페이스를 구현한 클래스에서 디폴트 메서드를 오버라이딩 해야한다.
  2. 디폴트 메서드와 조상 클래스의 메서드 간의 충돌
    • 조상 클래스의 메서드가 상속되고, 디폴트 메서드는 무시된다.

-> 그냥 직접 오버라이딩하면 해결된다.

profile
Enjoy to study

0개의 댓글