Java - Interface default 메소드, static 메소드, default 메소드 형식

CODEDRAGON Development/Java

반응형

 

 

default 메소드

·         JDK 1.8부터 인터페이스에 추가된 가능입니다.

·         인터페이스에서 공통으로 계속 사용되는 코드 함수의 바디를 가진 구체화함수 형태를 가질 있으며 이때 default 키워드로 정의해 주어야 합니니다.

·         추상메소드를 추가하여 기존 인터페이스가 변경된 경우 해당 인터페이스를 구현한 클래스에서 추가된 추상메소드를 반드시 구현해야 합니다. 하지만 default메소드를 추가하여 기존 인터페이스가 변경된 경우 해당 인터페이스를 구현한 클래스에서는 추가된 default메소드를 구현하지 않아도 됩니다. 새로 추가된 deault 메소드명과 기존의 메소드명이 중복되어 충돌되는 경우 필요한 쪽의 메소드와 같은 내용으로 오버라이딩해야 합니다.

 

 

static 메소드

·         JDK 1.8부터 인터페이스에 추가된 가능입니다.

·         기존 static 메소드 정의 형식과 동일합니다.

·         자바를 간결하고 단순하기 위해서 문법 규칙을 엄격하게 제한했지만 여기에 예외를 두어 유연하게 인터페이스를 사용할 있도록 형태입니다.

 

 

JDK 1.8 설정

인터페이스에 default 메소드와 static 메소드를 포함시킬 경우 JDK 버전을 1.8이상으로 설정해야 합니다.


 

 

 

 

기존 인터페이스에서 static 메소드 사용 (JDK 1.7)

·         인터페이스의 모든 메소드는 추상 메소드이어야 하여 static 메소드가 필요할 경우 별도의 클래스에 따로 정의해야 합니다.

·         이의 대표적인 예로 java.util.Collection인터페이스에 관련된 static메소드를 정의할 없어서 Collections 클래스 만들고 여기에 정의해서 사용하고 있습니다.

 

 

 

 

 

default 메소드 형식

메소드앞에 default 키워드를 붙여 일반메소드를 추가할 있으며 추상메소드가 아니기때문에 메소드의 몸통({}) 정의해 주어야 합니다.

 

interface MyInterface{

// 추상 메소드

public abstract void abstractMethod1();

// 접근 제한자 생략 가능

void abstractMethod2();

 

// default 메소드

// JDK 1.8 이상부터 사용가능

default void defaultMethod() {

};

 

// static 메소드

// JDK 1.8 이상부터 사용가능

public static void staticMethod() {

}

} 

 

 


반응형

'Development > Java' 카테고리의 다른 글

java.time 패키지  (0) 2019.02.01
swing (스윙)  (0) 2019.01.23
사용하는 함수에서 어떤 Exception이 발생가능한지 확인하기  (0) 2019.01.07
OpenJDK™ Source Releases  (0) 2018.12.31
Ex-인자 전달 방식(값 호출)  (0) 2018.12.24