JAVA 13강_1_람다식(Lamda Expression)

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

JAVA

목록 보기
78/79

람다식(Lambda Expression) 이란?

  • 메서드를 하나의 '식(expression)'으로 표현한 것

  • 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로 "익명(무명)함수" 라고도 함

  • 함수명을 선언하고 사용하는 것이 아닌 식별자 없이 실행 가능한 함수를 말함

  • 절차형 프로그래밍, 객체지향 프로그래밍과는 사뭇 다르게 함수의 구현과 호출만으로 프로그램을 만드는 방식인 함수형 프로그래밍에서 자주 사용이 됨

  • jdk 1.8 부터 도입이 되었으며, 람다식을 익명함수로 만드는 것을 말함

  • 자바에서 일반적으로 메서드를 사용하기 위해서는 항상 클래스를 객체로 생성한 후에 참조변수를 이용하여 메서드를 호출하게 되어 있음

  • 만약 모든 클래스에서 공통적으로 사용하는 메서드가 있다면 모든 클래스마다 해당 메서드를 정의해야 하는 불편함이 있음
    그러나 이러한 공통적으로 사용해야 하는 메서드를 독립적으로 만든 후에 모든 클래스에서 공통적으로 사용한다면 좋지 않을까?!

  • 하지만 자바는 객체지향 언어이므로 모든 메서드는 클래스 또는 인터페이스 내부에 존재해야 함.
    그리고 해당 메서드를 사용하기 위해서는 해당 클래스의 객체를 먼저 생성한 후에 메서드를 호출해야 함 이를 해결하는 것이 '람다식'임.

  • 자바는 새로운 메서드 문법을 정의하는 대신에 의미 있는 인터페이스의 문법을 활용하여 람다식으로 표현할 수 있음

  • 단 하나의 추상메서드를 포함하는 인터페이스를 '함수형 인터페이스'라고 함. 이 함수형 인터페이스의 호출 및 기능을 구현하는 방법을 '람다식'이라고 함

람다식의 활용
1. 구현 메서드의 약식 표현
2. 메서드 참조




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

interface Super {
	
	void output();
}

class Sub implements Super {

	@Override
	public void output() {
		
		System.out.println("super 인터페이스 추상메서드 재정의!");
		
	}
	
}

public class Lambda_01 {

	public static void main(String[] args) {
		
	// 1. 객체지향 프로그래밍 문법 (다형성 이용)
		Super sub = new Sub();
		
		sub.output();
		
		System.out.println();
		
		
	// 2. 무명 클래스 문법
		Super super1 = new Super() {      // new Super()만 선언하는 것도 가능
			
			@Override
			public void output() {
				
				System.out.println("인터페이스 추상 메서드 재정의!");
				
			}
		};
		
		super1.output();
		System.out.println();
		
		
	// 3. 함수형 프로그래밍 방법 (람다식 이용)  / 인터페이스의 추상 메서드가 여러개 있으면 사용 불가능
		Super super2 = () -> {
			System.out.println("람다식 이용 추상 메서드 재정의!");
		};
		
		super2.output();

	}

}

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

0개의 댓글