3일차 과제

조태진·2024년 2월 20일
0

이번 과제는 람다식이 무엇이고 왜 등장하고 람다식과 익명 클래스는 무슨 관계가 있는지 알아보는 과제이다.

먼저 람다식이 무엇일까?

람다식을 알기위해선 함수형 프로그래밍 기법을 알아야한다.

함수란 기능 or 동작을 정의한 명령 모음을 말한다

void abc(){
	//기능 및 동작
}

결론적으로 람다식이란 메서드를 하나의 식(함수) 으로 표현한 것이다.

람다의 예를 들어보자

interface A{
	void abc();
}

class B implements A{
	public void abc(){
    	//메서드 내용
    }
}

A a = new B();

a.abc();

보통 우리가 알고있는 익숙한 코드이다.
interface A를 구현한 클래스 B를 생성후
구현 클래스의 생성자B()를 통해 객체를 생성 후 객체의 참조 변수로 메서드 abc()를 호출하는 코드이다.

하지만? 인스턴스를 생성하고 코드가 너무 복잡하고 코딩하기가 귀찮다
그래서 이런 불편함을 해소하기위해 람다식이 나왔다.

interface A{
	void abc();
}

public class Main {
    public static void main(String[] args) {
        A a = () -> { //괄호는 abc()를 괄호로 축약한것
            System.out.println("람다식");
        };
        a.abc();
    }
}

그냥 딸깍하면 굳이 B클래스를 만들 필요도없고
이런 불필요한 코드를 줄이고 가독성을 높일 수 있다.

이번엔 람다식과 익명 클래스를 알아보자

람다식은 위에서 다뤘으니 익명 클래스란 무엇인지 알아보자.

익명 클래스란?

익명 클래스란 이름이 없는 일회용 클래스이다. 일회용으로만 사용하기 때문에 이름이 필요 없고 객체 생성 시에 클래스 정의와 생성을 동시에 한다는 특징이있다.

public class Main {
    public static void main(String[] args) {
        Function<Double,Double> square1 = new Function<Double, Double>() {
            @Override
            public Double apply(Double value) {
                return value * value;
            }
        };
        Double apply = square1.apply(5.0);
        System.out.println(apply);
    }
    }

위 코드처럼 Function 클래스 생성과 동시에 Override된 메서드를 사용 할 수 있다.

이제 마지막으로 람다와 익명클래스의 차이점을 알아보자

1.익명클래스와 람다에서의 this의 의미는 다르다 익명클래스의 this는 익명클래스 자신을 가리키지만 람다에서의 this는 선언된 클래스를 가리킨다.

2.익명 클래스는 인터페이스 타입과 메서드를 반복해야해서 코드가 장황해지지만 람다를 사용하면 불필요한 반목문을 삭제할 수 있고 복잡한 식을 단순하게 표현할 수 있다.

오늘 이 과제를 통해서 람다와 익명 클래스를 정확하게 알게되었다.

0개의 댓글