본문 바로가기

Java

Interface java8에서 추가된 기능

Interface도 method body를 가질수 있게 되었다.
default 메소드와 static 메소드.

interface 에서 default 메소드 구현가능.(N개)
 - implements 하여 상속받은 하위 클래스에서 호출가능.
 - implements 하여 상속받은 하위 클래스에서 메소드 재정의 가능.
 - 참조하는 변수로 함수를 호출가능.
 
interface 에서 static 메소드 구현가능.(N개)
 - 인터페이스명으로 호출가능.
 - 메소드 재정의 불가능.

 
@FunctionalInterface
public interface Java8Interface {
 
    public int add(int a, int b);
 
    default void defaultMethodA() {
        System.out.println("body가 있는 default 메소드 구현");
    }
 
    public static void staticMethodA() {
        System.out.println("body가 있는 static 메소드 구현");
    }
}
 
class DefaultClz {
 
    public static void main(String[] args) {
 
        Java8Interface.staticMethodA(); // 인터페이스명으로 호출
 
        /* 추상메소드를 구현하며 인터페이스 객체생성 */
        Java8Interface interObj = (a, b) -> a + b;
        interObj.defaultMethodA(); // 참조하는 변수로 함수를 호출
    }
}