인프런 워밍업 클럽

인프런 워밍업 클럽/ BE 3일차 과제 : 익명 클래스와 람다식

킹갓홍 2024. 5. 1. 20:16

익명 클래스란 무엇인가?

익명 클래스란 내부 클래스의 일종으로 이름 그대로 이름이 없는 클래스를 말한다.

이름이 없다는 것은 앞으로 다시 사용하거나, 기억하지 않아도 된다는 의미로 일시적으로 사용되고 버려지는 클래스라고 할 수 있다.

 

일반적인 클래스 사용 경우

// 부모 클래스
class vehicle {
    public String getName() {
    	return "탈 것";
    }
}

// 자식 클래스
class car extends vehicle {
    @Override
    public String getName() {
        return "자동차";
    }
}

public class Main {
    public static void main(String[] args) {
        vehicle myCar = new Car();
        myCar.getName();
    }
}

 

익명 클래스를 사용하는 경우

// 부모 클래스
class vehicle {
    public String getName() {
    	return "탈 것";
    }
}

public class Main {
    public static void main(String[] args) {
        vehicle myCar = new Car() {
            @Override 
            public String getName() {
            	return "내 차";
            }
    
        };
        
        myCar.getName(); // "내 차" 출력

    }
}

익명 클래스의 경우 위와 같이 클래스를 정의하면서 객체를 생성할 수 있다.

하지만 익명 클래스는 지역변수와 같이 선언된 지역을 벗어나게 되면 사라지게 된다.

 

즉, 익명 클래스는 한 번 사용하고 필요없는 객체를 생성할 때 유용하고 별도의 클래스 파일을 만들지 않아도 되기 때문에 코드를 줄일 수 있다는 장점이 있다.

 

람다 표현식이란 무엇인가?

람다 표현식이란 함수형 프로그래밍을 구성하기 위한 함수식으로 자바의 메서드를 간결한 함수식으로 표현한 것을 의미한다.

함수형 프로그래밍 : 프로그래밍 패러다임의 한 종류로 어떻게(HOW)보다는 무엇(What)을 수행할 것인지에 집중한다.

 

람다식과 익명 클래스의 관계

익명 클래스에서 선언과 동시에 익명으로 클래스를 만들어 임시로 쓸 수 있는 클래스를 만들었었다. 람다식은 이와 같은 방식으로 함수형 인터페이스를 만들어서 함수를 쓰는 동시에 해당 함수에 맞게 익명 함수를 정의하여 사용한다. 기존 익명 클래스를 만들고 익명 함수를 쓰는 것에서 더 나아가 여러가지를 생략이 가능하도록 했다.

람다식이 등장한 이유

람다 표현식 이전의 자바에서는 메서드를 만들기 위해 하나의 클래스를 정의해야했다. 하지만 람다식이 등장하면서 메서드의 이름과 반환값을 생략해 자바 코드가 매우 간결해져 가독성을 높일 수 있었다.

 

람다식의 문법

int add(int x, int y) {
    return x + y;
}

// 위의 메서드를 람다 표현식을 이용해 아래와 같이 단축 시킬수 있다. (메서드 반환 타입, 메서드 이름 생략)
(int x, int y) -> {
	return x + y;
};

// 매개변수 타입도 생략 할 수 있다.
(x, y) -> {
	return x + y;
};

// 함수에 리턴문 한줄만 있을 경우 더욱 더 단축 시킬 수 있다. (중괄호, return 생략)
(x, y) -> x + y;



//출처 : https://inpa.tistory.com/entry/%E2%98%95-Lambda-Expression