JAVA 13강_2_구현 메서드의 약식 표현(반환타입, 매개변수 유무 => 무명 클래스, 람다식 표현 방법)

열라뽕따히·2024년 3월 2일

JAVA

목록 보기
79/79

반환타입과 매개변수의 유무에 따른 표현 방법



=============================코드=============================

// 1. 구현 메서드의 약식 표현

interface SuperA {
	
	// 반환타입(X), 매개변수(X)
	void method1();
}

interface SuperB {
	
	// 반환타입(X), 매개변수(O)
	void method2(int su);
}

interface SuperC {
	
	// 반환타입(O), 매개변수(X)
	int method3();
}

interface SuperD {
	
	// 반환타입(O), 매개변수(O)
	double method4(int su1, double su2);
}



위의 메서드들을 활용하여 무명 클래스의 표현 방식과 람다식 표현 방식을 살펴보자!



=============================코드=============================

public class Lambda_02 {

	public static void main(String[] args) {
		
	// 1-1. 무명 클래스로 객체 생성
	//      ==> 반환타입(X), 매개변수(X)
		SuperA a = new SuperA() {
			
			@Override
			public void method1() {
				System.out.println("무명 클래스 ==> 반환타입(X), 매개변수(X) 메서드!!");
			}
		};
		
		a.method1();  // 무명 클래스의 메서드 호출
		System.out.println();
		
		
	// 1-2 람다식으로 표현하는 방법
		SuperA a2 = () -> {      // () 안에 아무것도 없는 것은 매개변수가 없기 때문
			System.out.println("람다식 ==> 반환타입(X), 매개변수(X) 메서드!!");
		};
		
		a2.method1();   // 람다식으로 메서드를 호출
		
		
	// 람다식에서 메서드 호출 시 실행 문장이 한 줄인 경우 { } 생략 가능!! 
		SuperA a3 = () ->      
			System.out.println("람다식 ==> 반환타입(X), 매개변수(X) 메서드!!");
			
		a3.method1();
		System.out.println();
		
		
	// 2-1 무명 클래스를 객체 생성
	//     ==> 반환타입(X), 매개변수(O)
		
		SuperB b = new SuperB() {
			
			@Override
			public void method2(int su) {
				System.out.println("무명 클래스 ==> 반환타입(X), 매개변수(O) 메서드!! / su >>> " + su);
				
			}
		};
		
		b.method2(47);
		System.out.println();
		
		
	// 2-2 람다식으로 표현하는 방법
		SuperB b2 = (int su) -> {
			System.out.println("람다식 ==> 반환타입(X), 매개변수(O) 메서드!! / su >>> " + su);
		};
		
		b2.method2(88);
		System.out.println();
		
		
	// 매개변수가 있는 경우 매개변수의 타입 생략 가능
		SuperB b3 = (su) -> {   
			System.out.println("람다식 ==> 반환타입(X), 매개변수(O) 메서드!! / su >>> " + su);
		};
		
		b3.method2(47);
		
		
	// 람다식에서 메서드 호출 시 실행 문장이 한 문장인 경우 { } 생략 가능
		SuperB b4 = (su) ->    
			System.out.println("람다식 ==> 반환타입(X), 매개변수(O) 메서드!! / su >>> " + su);
		
		b4.method2(88);
		System.out.println();
		
		
	// 람다식에서 메서드 호출 시 매개변수가 하나이면 ( ) 생략 가능
		SuperB b5 = su ->    
		System.out.println("람다식 ==> 반환타입(X), 매개변수(O) 메서드!! / su >>> " + su);
	
		b5.method2(47);
		System.out.println();
		
		
	// 3-1 무명 클래스로 객체 생성 
	//     ==> 반환타입(O), 매개변수(X)
		SuperC c = new SuperC() {
			
			@Override
			public int method3() {
				
				return 27;
			}
		};
		System.out.println("무명 클래스 ==> 반환타입(O), 매개변수(X) 메서드!! >>> " + c.method3());
		System.out.println();
		
		
	// 3-2 람다식으로 표현하는 방법
		SuperC c2 = () -> {
			return 66;
		};
		System.out.println("람다식 ==> 반환타입(O), 매개변수(X) 메서드!! >>> " + c2.method3());
		System.out.println();
		
		
	// 메서드 호출 시 return 문장이 한 문장이면 return 키워드와 { } 가 생략 가능
		SuperC c3 = () -> 23;
		
		System.out.println("람다식 ==> 반환타입(O), 매개변수(X) 메서드!! >>> " + c3.method3());
		System.out.println();
		
		
	// 4-1 무명 클래스로 객체 생성
	//     ==> 반환타입(O), 매개변수(O)
		SuperD d = new SuperD() {
			
			@Override
			public double method4(int su1, double su2) {
				
				return su1 + su2;
			}
		};
		System.out.println("무명 클래스 ==> 반환타입(O), 매개변수(O) 메서드!! / " + d.method4(40, 128));
		System.out.println();
		
		
	// 4-2 람다식으로 표현하는 방법
		SuperD d2 = (int su1, double su2) -> {
			return su1 + su2;
		};
		System.out.println("람다식 ==> 반환타입(O), 매개변수(O) 메서드!! / " + d2.method4(11, 34));
		System.out.println();
		
	// 매개변수의 타입은 생략해도 됨
		SuperD d3 = (su1, su2) -> {
			return su1 + su2;
		};
		System.out.println("람다식 ==> 반환타입(O), 매개변수(O) 메서드!! / " + d3.method4(40, 77));
		System.out.println();
		
		
	// 메서드 호출 시 return문이 한 문장이면 { }와 return 키워드 생략 가능
		SuperD d4 = (su1, su2) -> su1 + su2;
		
		System.out.println("람다식 ==> 반환타입(O), 매개변수(O) 메서드!! / " + d4.method4(11, 34));
		System.out.println();
	}

}

=============================실행=============================

0개의 댓글