package chapter08;

public class StarBugs {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Coffee_default mCoffee	=	new ice_coffee( 3000, 3 );
		
		
		mCoffee	=	new ice_latte( 5000, 2 );
		ice_latte ice_latte	=	(ice_latte)mCoffee;
		
		

	}	

}


abstract class Coffee_default{
	int price 		= 0;
	int iceLevel 	= 0;
	
	Coffee_default( int get_Price, int get_iceLevel )
	{
		this.price 		= get_Price;
		this.iceLevel 	= get_iceLevel;		
	}
	
	abstract void exec_drop();
	abstract void exec_add_ice();
	abstract void exec_taste();
	
}


class ice_coffee extends Coffee_default
{
	int get_Price		=	0;
	int get_iceLevel	=	0;
	
	ice_coffee(int get_Price, int get_iceLevel) {
		super(get_Price, get_iceLevel);
		// TODO Auto-generated constructor stub
		
		this.get_Price		=	get_Price;
		this.get_iceLevel	=	get_iceLevel;
		
		System.out.println("---------iceCoffee-----------");
		
		System.out.println("얼음량:" + get_iceLevel + "단계");
		System.out.println("가격:" + get_Price + "원");
		
		this.exec_drop();
	}

	@Override
	void exec_drop() {
		// TODO Auto-generated method stub
		System.out.println(" iceCoffee - 커피내림 ");
		
		this.exec_add_ice();
	}

	@Override
	void exec_add_ice() {
		// TODO Auto-generated method stub
		System.out.println(" iceCoffee - 얼음첨가 - 얼음첨가단계 : " + this.get_iceLevel);
		
		this.exec_taste();
	}

	@Override
	void exec_taste() {
		// TODO Auto-generated method stub
		System.out.println(" iceCoffee - 맛이 커피맛이다. ");
		
	}


	
}


class ice_latte extends Coffee_default
{
	int get_Price		=	0;
	int get_iceLevel	=	0;

	ice_latte(int get_Price, int get_iceLevel) {
		super(get_Price, get_iceLevel);
		// TODO Auto-generated constructor stub
		
		this.get_Price		=	get_Price;
		this.get_iceLevel	=	get_iceLevel;		
		
		System.out.println("---------ice_latte-----------");
		
		System.out.println("얼음량:" + get_iceLevel + "단계");
		System.out.println("가격:" + get_Price + "원");
		
		this.exec_drop();
	}

	@Override
	void exec_drop() {
		// TODO Auto-generated method stub
		System.out.println(" ice_latte - 커피내림 ");
		
		this.exec_add_ice();
	}

	@Override
	void exec_add_ice() {
		// TODO Auto-generated method stub
		System.out.println(" ice_latte - 얼음첨가 - 얼음첨가단계 : " + this.get_iceLevel);
		
		this.mixMilk();
	}	
	
	public void mixMilk()
	{
		System.out.println(" ice_latte - 우유첨가 ");
		this.exec_taste();
	}

	@Override
	void exec_taste() {
		// TODO Auto-generated method stub
		System.out.println(" ice_latte - 맛이 커피 + 우유 맛이다. ");
		
	}
	
	
}