본문 바로가기

기초 지식/Java

Java 1.8 Default Method

Default Method

- 자바 1.8부터 도입된 문법으로 인터페이스 내부에 로직을 포함 시킬 수 있는 것이 특징

- 하위호환성을 위해 도입

 

Interface 라는 기능에 어울리지 않는 Default Method가 Java 1.8에서 추가 되었습니다.

하위호환성을 위한다는 것은 기존의 레거시 코드에 interface 메소드를 추가해야한다면 해당 interface를 상속받는 모든 클래스에서 추가된 메소드의 구현을 해줘야합니다.

 

하지만 Default Method를 사용하고 수정이 필요한 클래스에서만 메소드 오버라이딩을 해준다면 간편하게 수정할 수 있습니다.

interface TestInterface {
	//기존 메서드들
    public void go();
    public void get();
    
    default void show() {
    	// 구현 내용
        System.out.println("표시해줘요");
    }
}

class TestClass implements TestInterface {
	//그냥 사용한다면
}

class OverrideTestClass implements TestInterface {

	//만약 어떠한 클래스에서 수정이 필요하다면
    @Override
    public void show() {
    	//새로운 구현 내용
        System.out.println("수정했어요");
    }
}



// 사용 부분
class Main {
	TestClass testClass = new TestClass();
    OverrideTestClass overrideTestClass = new OverrideTestClass();
    
    testClass.show(); //"표시해줘요"
    overrideTestClass.show(); //"수정했어요"
}

장점

  • 기존 코드에 새로운 메서드를 쉽게 추가할 수 있다

단점

  • 없음
반응형