📁 ex01

☕ YalcoGroup.java

public abstract class YalcoGroup {
    protected static final String CREED = "우리의 %s 얄팍하다";

    //  💡 클래스 메소드는 abstract 불가
    //  abstract static String getCreed ();

    protected final int no;
    protected final String name;

    public YalcoGroup(int no, String name) {
        this.no = no;
        this.name = name;
    }

    public String intro () {
        return "%d호 %s점입니다.".formatted(no, name);
    }
		//  이후 다른 패키지에서의 실습을 위해 public으로
    public abstract void takeOrder ();
}

☕ YalcoChicken.java

public class YalcoChicken extends YalcoGroup {
    public static String getCreed () {
        return CREED.formatted("튀김옷은");
    }
    protected static int lastNo = 0;

    public YalcoChicken(String name) {
        super(++lastNo, name);
    }

    //  💡 반드시 구현 - 제거해 볼 것
		@Override
    public void takeOrder () {
        System.out.printf("얄코치킨 %s 치킨을 주문해주세요.%n", super.intro());
    }
}

☕ YalcoCafe.java

public class YalcoCafe extends YalcoGroup {
    public static String getCreed () {
        return CREED.formatted("원두향은");
    }
    protected static int lastNo = 0;

    private boolean isTakeout;

    public YalcoCafe(String name, boolean isTakeout) {
        super(++lastNo, name);
        this.isTakeout = isTakeout;
    }

    //  💡 반드시 구현 - 제거해 볼 것
		@Override
    public void takeOrder () {
        System.out.printf("얄코카페 %s 음료를 주문해주세요.%n", super.intro());
        if (!isTakeout) System.out.println("매장에서 드시겠어요?");
    }
}

☕ Main.java

				//  ⚠️ 불가
        YalcoGroup yalcoGroup = new YalcoGroup(1, "서울");

        YalcoChicken ychStore1 = new YalcoChicken("판교");
        YalcoChicken ychStore2 = new YalcoChicken("강남");

        YalcoCafe ycfStore1 = new YalcoCafe("울릉", true);
        YalcoCafe ycfStore2 = new YalcoCafe("강릉", false);

        YalcoGroup[] ycStores = {
                ychStore1, ychStore2,
                ycfStore1, ycfStore2
        };

        for (YalcoGroup ycStore : ycStores) {
            ycStore.takeOrder();
        }

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

        System.out.println(YalcoChicken.getCreed());
        System.out.println(YalcoCafe.getCreed());

abstract 클래스

abstract 메소드