📁 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
메소드