웹 개발 메모장

[자바] 인터페이스에도 메소드 정의가 가능하다 본문

옛날../자바

[자바] 인터페이스에도 메소드 정의가 가능하다

도로롱주 2018. 7. 10. 10:17




자바8 이상에서의 인터페이스



자바8 부터 인터페이스에서 메소드를 정의할 수 있게 됬습니다.


함수형 프로그래밍을 자바에서 구현하기 위한 시작점? 같은 기능인 것 같습니다.


default 메소드 static 메소드가 추가되었는데 간단한 예제를 보면 될 것 같습니다.



추상메소드 뿐만 아니라 default 메소드static 메소드가 추가된 인터페이스를 다음과 같이 만들 수 있습니다.


Calc 인터페이스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public interface Calc {
    // 추상 메소드
    public int sum(int a, int b);
    public int minus(int a, int b);
    
    // default 메소드
    default int multiple(int a, int b) {
        return a*b;
    }
    
    // static 메소드
    public static String getName() {
        return "Calculation";
    }
}
cs



인터페이스를 상속받는 클래스는 추상메소드들만 구현해주면 됩니다.

default 메소드는 오버라이드도 가능합니다.



CalcImpl 클래스

1
2
3
4
5
6
7
8
9
10
11
public class CalcImpl implements Calc{
    @Override
    public int sum(int a, int b) {
        return a+b;
    }
 
    @Override
    public int minus(int a, int b) {
        return a-b;
    }
}
cs




다음과 같이 사용하면 됩니다.


CalcTest 클래스

1
2
3
4
5
6
7
8
9
10
11
12
13
public class CalcTest {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        
        Calc c = new CalcImpl();
        
        System.out.println(c.sum(a, b));
        System.out.println(c.minus(a, b));
        System.out.println(c.multiple(a, b));
        System.out.println(Calc.getName());
    }
}
cs




Comments