자바8 인터페이스

theonde·2022년 8월 24일
0

디폴트 메소드

  • 인터페이스에 추상 메소드가 아닌 구현 메소드를 정의 하는 것

  • 해당 인터페이스를 구현한 클래스들을 깨트리지 않고 메소드를 추가할 수 있다.

  • 인터페이스를 상속받는 인터페이스에서 다시 추상 메소드로 변경할 수 있다.

  • 구현체가 재정의 할 수 있다.

  • 구현체에 따라 런타임 에러가 발생할 수 있다.

  • 문서화를 잘 해놓아야 한다.

  • 같은 디폴트 메소드를 구현한 인터페이스를 2개 이상 구현하였을 경우엔 자바 컴파일러가 어떤 디폴트 메소드를 사용할지 판단할 수 없으므로 컴파일 에러를 발생시키게 되고, 무조건 디폴트 메소드를 재정의 해야한다.

interface Foo {
	default void print() {
    	System.out.println("foo");
    }
}

interface Bar {
	default void print() {
    	System.out.println("bar");
    }
}

class Impl implements Foo, Bar {
		// 재정의 하지 않으면 컴파일 에러 발생!!
		@Override 
        public void print() {
        	System.out.println("implement");
        }
	}

스태틱 메소드

  • 해당 타입의 헬퍼 또는 유틸리티 메소드를 제공할 때 인터페이스 스태틱 메소드를 선언할 수 있다.
profile
개발자ㅋ.ㅋ

0개의 댓글