interface Calculator { // 두 개의 정수를 입력받고, 결과값을 리턴하는 sum 함수를 정의한 Calculator 인터페이스 int sum(int a, int b); } class MyCalculator implements Calculator // 자식 클래스 MyCalculator는 인터페이스인 부모 클래스 Calculator를 구현한다. public int sum(int a, int b) { return a + b; } } public class Sample { public static void main(String[] args) { MyCalculator mc = new MyCalculator(); int result = mc.sum(3, 4); System.out.println(result); // 7(=3+4) 출력 } }
interface Calculator { // 두 개의 정수를 입력받고, 결과값을 리턴하는 sum 함수를 정의한 Calculator 인터페이스 int sum(int a, int b); } public class Sample { public static void main(String[] args) { Calculator mc = (int a, int b) -> a + b; int result = mc.sum(3, 4); System.out.println(result); // 7(=3+4) 출력 } }
위 코드에서 사용한 람다
Calculator mc = (int a, int b) -> a + b;
1. (int a, int b)는 Calculator 인터페이스의 sum 함수의 입력항목(parameter) 2. a + b 는 리턴값 ☝람다를 사용하면 위의 MyCalculator와 같은 실제 클래스가 없이도 Calculator 객체를 생성할 수 있음.
1. Calculator mc = (int a, int b) -> a + b; 2. Calculator mc = (a, b) -> a + b // 인터페이스에 이미 입출력에 대한 타입이 정의되어 있어 입력값의 타입인 int는 생략이 가능 3. Calculator mc = Integer::sum; // (a, b) -> a + b 는 Integer.sum(int a, int b)와 동일하기 때문에
class-name::method-name; // target reference::method reference
Computer::getAge; // method reference to the method getAge defined in the Computer class // Computer 클래스에 정의된 getAge 메소드에 대한 참조 메소드