본문 바로가기

Knowledge Wiki/Java

JAVA 디폴트 메서드

1. JDK 1.8 부터는 인터페이스에 디폴트 메서드와 static 메서드도 사용 가능하게 되었다.
    JDK 1.8 이전에는 인터페이스에 새로운 메서드(추상 메서드)를 추가하기 어려웠음.
    

    왜냐면 인터페이스에 메서드 하나 추가할 때마다 이 인터페이스를 구현하는 

    모든 자식 객체들에게도 메서드 구현부를 추가해야됐기 때문.
    

    이 부분을 해결하기 위해 JDK1.8부터는 

    default 키워드를 추상 메서드 앞에 붙인 디폴트 메서드를 사용하기로 함.
 


2. 디폴트 메서드가 기존의 메서드와 충돌하는 경우가 생기게 됨. 그리고 이에 대한 해결책이 있다.
    1) 여러 인터페이스의 디폴트 메서드 간의 충돌
        - 인터페이스를 구현한 클래스에서 디폴트 메서드를 오버라이딩해야 한다.
ex)

public class MyClass implements InterfaceA, InterfaceB {
	public void func(){
		// 명시적으로 어떤 인터페이스의 함수를 호출할 지 지정한다.
		InterfaceB.super.func();
	}
}


    2) 디폴트 메서드와 조상 클래스의 메서드 간의 충돌
        - 조상 클래스의 메서드가 상속되고, 디폴트 메서드는 무시된다.

'Knowledge Wiki > Java' 카테고리의 다른 글

JAVA final 키워드  (0) 2021.11.30
JAVA 내부 클래스  (0) 2021.11.30
JAVA 인터페이스  (0) 2021.11.29
JAVA 다형성  (0) 2021.11.26
JAVA 클래스, 클래스패스  (0) 2021.11.26