인프런 커뮤니티 질문&답변
25년 2회 기출 5:40 질문입니다.
해결된 질문
작성
·
24
퀴즈
자바 상속에서 자식 객체 생성 시 생성자 호출 순서의 첫 단계는 무엇일까요?
자식 클래스 생성자 코드 실행
부모 클래스의 기본 생성자 호출
자식 클래스 메소드 호출
정적 초기화 블록 실행
답변 2
1
안녕하세요! 답변을 드립니다.
1) 람다식으로 세부 내용을 구현하는 게 맞나요?
맞습니다.
F는 추상 메서드가 하나뿐인 인터페이스라서, 이런 인터페이스를 함수형 인터페이스라고 합니다.
함수형 인터페이스는 람다식으로 구현할 수 있습니다.
즉 아래 둘은 본질적으로 같은 의미입니다.
람다식 버전
F f = x -> x * 2;익명 클래스로 바꾸면
F f = new F() {
@Override
public int app(int x) throws Exception {
return x * 2;
}
};이걸 짧게 쓴 것을 람다식으로 봐주시면 됩니다.
2) 왜 implements가 없나요?
오해가 있습니다. 이 키워드는 인터페이스를 상속처럼 받아서 클래스를 작성할 때 사용합니다.
implements는 클래스를 선언할 때 씁니다.
람다식은 클래스를 직접 선언하는 문법이 아닙니다.
예를 들어 클래스로 구현하면 implements가 필요합니다.
그런데 지금 코드는 클래스를 따로 만들지 않고,
F 타입이 필요한 자리에 람다식을 바로 넣었습니다.
이때 컴파일러가 이 람다식을 보고
“아, 이건 F의 app을 구현한 것으로 처리하면 되겠구나”
라고 판단해서 내부적으로 맞는 객체로 처리해 줍니다.
문법상 implements는 안 썼지만 의미상으로는 F를 구현한 것으로 봐주시면 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. 유찬혁님.
질문하신 인터페이스와 람다식, 그리고 예외처리에 관한 내용에 대해 설명드리겠습니다.
인터페이스와 람다식
인터페이스에서 메서드가 “정수 입력, 출력에 예외를 던질 수 있음”이라는 형태를 강제하는 것은 맞습니다. 이러한 인터페이스를 구현할 때는 일반적으로 “익명 클래스” 또는, Java 8 이후부터는 “람다식”을 사용하여 구현할 수 있습니다.
람다식을 이용한 구현: 람다식은 함수형 인터페이스(여러 개가 아닌 오직 하나의 추상 메서드를 가진 인터페이스)를 매우 간단하게 구현할 수 있는 방식입니다.
f와n->n+9같은 람다 표현식은 해당 인터페이스를 구현한 것과 동일한 역할을 합니다.implements키워드 사용 여부: 일반적으로 클래스를 통해 인터페이스를 구현할 때는implements키워드를 사용합니다. 그러나 함수형 인터페이스의 경우, 람다식은 그 인터페이스의 추상 메서드 하나를 구현하는 것과 동일한 효과가 있기 때문에, 람다식이나 메서드 참조를 사용할 때 직접implements키워드를 사용할 필요는 없습니다.
요약
정리하자면, Java에서 함수형 인터페이스와 람다식을 통해 사용자가 메서드를 간단히 작성할 수 있으며, 이때 직접적으로 implements를 사용할 필요가 없습니다. 람다식은 함수형 인터페이스가 요구하는 특정 시그니처의 메서드를 구현하여 사용하는 것입니다.
추가적인 정보를 위해 관련 질문 URL을 첨부드립니다:
- Java 람다식과 함수형 인터페이스 이해하기 - 람다식의 기본 원리와 작동 방식을 설명합니다.
- 자바 함수형 프로그래밍에 대한 질문 - 함수형 프로그래밍의 장점과 구현 방식을 다룹니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




