Java(Lambda)_01

2024. 11. 12. 18:18·Java/기초 내용 정리

2024-11-12

 

 

 

 

super 인터페이스 추상메서드 재정의

인터페이스 추상메서드 재정의

람다식 이용 추상 메서드 재정의

 

package basic;

/*
 *  람다식(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() {
			
			@Override
			public void output() {
			
				System.out.println("인터페이스 추상메서드 재정의");
			}
		};
		super1.output();
		System.out.println();
		
		//  3. 함수형 프로그래밍 기법 - 람다식 이용
		Super super2 = () -> {
			
			System.out.println("람다식 이용 추상 메서드 재정의");
		};
		super2.output();
	}
}

'Java > 기초 내용 정리' 카테고리의 다른 글

Java(Network)_01  (0) 2024.11.12
Java(Lambda)_02  (1) 2024.11.12
Java(Thread)_07  (1) 2024.11.12
Java(Thread)_06  (1) 2024.11.12
Java(Thread)_05  (0) 2024.11.12
'Java/기초 내용 정리' 카테고리의 다른 글
  • Java(Network)_01
  • Java(Lambda)_02
  • Java(Thread)_07
  • Java(Thread)_06
mw41817
mw41817
일생의 개발 기록 저장소
  • mw41817
    IT 개발 일지
    mw41817
    • Index (487)
      • HTML (36)
        • 기초 내용 정리 (36)
      • CSS (29)
        • 기초 내용 정리 (29)
      • JavaScript (60)
        • 기초 내용 정리 (60)
      • JQuery (38)
        • 기초 내용 정리 (38)
      • Java (232)
        • 기초 내용 정리 (232)
      • JSP (46)
        • 기초 내용 정리 (46)
      • Spring, Boot (31)
        • 기초 내용 정리 (31)
      • DB (5)
        • Oracle SQL (5)
      • Code WorkBook (6)
        • programmers (6)
        • Baekjoon (0)
      • 기타 (1)
        • 유용한 사이트 (3)
  • 전체
    오늘
    어제
  • 글쓰기 관리
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 카테고리
    • 주인장 GitHub
  • 공지사항

  • 인기 글

  • 태그

    html #코딩 #프로그래밍 #기초
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
mw41817
Java(Lambda)_01
상단으로

티스토리툴바