본문 바로가기

인강 보습 (인프런,유데미,패스트캠퍼스)/나도코딩의 자바 기본편

익명 클래스, 람다와 스트림 - (1) 익명클래스, 람다

익명 클래스

public class _01_AnonymousClass1 {
    public static void main(String[] args) {
class Coffee {
    public void order(String coffee) {
        System.out.println("주문하신 " + coffee + " 나왔습니다.");
    }
Coffee c1 = new Coffee();
c1.order("아메리카노");
System.out.println("----------------");

Coffee c2 = new Coffee();
c2.order("라떼");
System.out.println("----------------");

// 굉장히 친한 친구 방문
Coffee specialCoffee = new Coffee() {
    @Override
    public void order(String coffee) {
        super.order(coffee);
        System.out.println("(귓속말) 딸기 케이크는 서비스예요.");
    }

 

익명클래스 (2) 

_02_AnonymousClass2

 

public class _02_AnonymousClass2 {
    public static void main(String[] args) {
        HomeMadeBurger momMadeBurger = getMomMadeBurger();
        momMadeBurger.cook();
abstract class HomeMadeBurger {
    public abstract void cook();
}
public static HomeMadeBurger getMomMadeBurger() {
    return new HomeMadeBurger() {
        @Override
        public void cook() {
            System.out.println("집에서 만드는 엄마표 수제 버거");
            System.out.println("재료 : 빵, 소고기패티, 해시브라운, 양상추, 마요네즈, 피클");
        }
    };

          *getMomMadeBurger로 cook 메소드를 그 때 그 때 만들어 사용 (익명클래스)

 

람다식 

public class _03_Lambda {
    public static void main(String[] args) {
        // 람다식
        // (전달값1, 전달값2, ...) -> { 코드 }
    }

//    public void print() {
//        String s = "test";
//        System.out.println(s);
//    }

//    () -> {
//        String s = "test";
//        System.out.println(s);
//    }

//    public void print(String s) {
//        System.out.println(s);
//    }

//    s -> System.out.println(s)

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

//    (x, y) -> x + y
}