오리 - 아이템 class 구성
class Main {
public static void main(String[] args) {
청둥오리 a청둥오리 = new 청둥오리();
a청둥오리.날다();
// 출력 : 오리가 날개로 날아갑니다.
흰오리 a흰오리 = new 흰오리();
a흰오리.날다();
// 출력 : 오리가 날개로 날아갑니다.
고무오리 a고무오리 = new 고무오리();
a고무오리.날다();
// 출력 : 저는 날 수 없어요. ㅜㅠ
고무2오리 a고무2오리 = new 고무2오리();
a고무2오리.날다();
}
}
class 오리 {
비행아이템 a비행아이템;
오리(){
a비행아이템 = new 날개아이템();
}
void 날다(){
a비행아이템.작동();
}
}
abstract class 비행아이템{
abstract void 작동();
}
class 날개아이템 extends 비행아이템{
void 작동(){
System.out.println("오리가 날개아이템 활성화되어 날아갑니다.");
}
}
class 날개비활성아이템 extends 비행아이템{
void 작동(){
System.out.println("오리가 날개아이템 비활성화되어 날 수 없어요.");
}
}
class 청둥오리 extends 오리{
}
class 흰오리 extends 오리{
}
class 고무오리 extends 오리{
고무오리(){
a비행아이템 = new 날개비활성아이템();
}
}
class 고무2오리 extends 오리{
고무2오리(){
a비행아이템 = new 날개아이템();
}
}