웹 개발 메모장
[자바] 인터페이스에도 메소드 정의가 가능하다 본문
자바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 |
'옛날.. > 자바' 카테고리의 다른 글
[자바] Integer Object는 Object인데 왜 == 연산 결과가 가끔 true 일까 (0) | 2019.01.25 |
---|---|
[자바] Lazy Evaluation 이란? (6) | 2019.01.25 |
[자바] HashMap 기초 개념 (0) | 2018.08.13 |
[자바] 자바8 맛보기 (0) | 2018.07.19 |
[자바] 매개 변수에 함수를 넣어봅시다. (0) | 2018.07.10 |
Comments