푸린세스

Ex14_0_2 본문

카테고리 없음

Ex14_0_2

푸곰주 2022. 3. 28. 12:34
package ex14;

public class Ex14_0 {

	public static void main(String[] args) {
//		Object obj = (a,b) -> a>b? a : b; //람다식 익명객체 <-참조변수로 다루어야
//		MyFunction2 f = new MyFunction2() {
//			public int max(int a, int b) { //오버라이딩 규칙 - 접근제어자는 좁게 못바꾼다.
//											//안부치면 default가 나기때문에 public붙여줘야
//			return a> b? a:b;
//		}
//
//	};
		//람다식(익명객체)을 다루기 위한 참조변수의 타입은 함수형 인터페이스로 한다.
		MyFunction2 f = (a,b) -> a>b? a : b; //람다식,익명객체
		//참조변수의 타입=함수형인터페이스의 타입이여야함
		
		//함수형인터페이스의 선언된 추상메소드 = 람다식과 맞아야함.
		//매개변수타입, 결과타입도 모두 같아야함.
		//람다식-메서드,사용하려면,이름이있어야함.이름을다지워버림.
		//호출하려면이름이있어야한다.사용하려면이름이 필요하다. 람다식에 이름을 붙여줘야
		//max이름붙여ㅑ줌 추상메소드~람다식과 연결해주는것.
		//추상메서드를통해서 람다식을 호춣한다.
		
		
	
	int value = f.max(3,5); //참조변수 obj의 타입은 Object
			//리모콘에는 max q버튼 . 
			//함수형 인터페이스 필요....
			
			//메서드 부분을 표현한게 람다식..사실메서드만있으면 되는데 자바에서는 메서드만있으면안됨
			//모든 메서드는 객체안에 있어야한다...
			
			//??? obj 함수형인터페이스.
			System.out.println("value=" + value); //value =5
}
}

@FunctionalInterface  //함수형인터페이스는 단 하나의 추상메서드만 가져야 함.
interface MyFunction2{
	 int max(int a, int b);
}//인터페이스의 모든 메서드는 public이면서 abstract..