📁 ex01

☕ Main.java

				//  💡 와일드카드로 임포트 - import sec05.chap08.ex01.*;

        YalcoGroup store1 = new YalcoChicken("울산");
        YalcoGroup store2 = new YalcoCafe("창원", true);

        YalcoGroup store3 = new YalcoGroup (1, "포항") {
            
						//  원본 메소드에 public 추가
						@Override
            public void takeOrder() {
                System.out.printf(
                        "유일한 얄코과메기 %s 과메기를 주문해주세요.%n",
                        super.intro()
                );
            }

            public void dryFish () {
                System.out.println("과메기 말리기");
            }
        };

        String store3Intro = store3.intro();
        store3.takeOrder();
        //store3.dryFish // ⚠️ 불가

        System.out.println("\\n- - - - -\\n");

        for (YalcoGroup store : new YalcoGroup[] {store1, store2, store3}) {
            store.takeOrder();
        }

📁 ex02

☕ OnClickListener.java

public interface OnClickListener {
    void onClick ();
}

☕ Button.java

public class Button {
    String name;
    public Button(String name) {
        this.name = name;
    }

		//  ⭐️ 인터페이스를 상속한 클래스 자료형
    private OnClickListener onClickListener;
    public void setOnClickListener(OnClickListener onClickListener) {
        this.onClickListener = onClickListener;
    }

    public void func () {
        onClickListener.onClick();
    }
}