/*
	=======================================================================================

	ÀÎÅÍÆäÀÌ½º(interface)

	(1) interface Å°¿öµå »ç¿ë.

	(2) ÀÎÅÍÆäÀÌ½º ÀÚ±â ÀÌ¸§À¸·Î °´Ã¼¸¦ ¸¸µé ¼ö ¾ø´Ù.
	     ¡æ ÀÎÅÍÆäÀÌ½º ÀÚ±â ÀÌ¸§À¸·Î ÀÎÅÍÆäÀÌ½º¸¦ ±¸ÇöÇÑ Å¬·¡½ºÀÇ °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù.

	(3) ÀÎÅÍÆäÀÌ½ºÀÇ Ãß»ó ¸Þ¼­µå(¼±¾ðµÈ ¸Þ¼­µå, ÇÁ·ÎÅä Å¸ÀÔ ¸Þ¼­µå)´Â ¹Ýµå½Ã ÀÎÅÍÆäÀÌ½º¸¦
	     ±¸ÇöÇÏ´Â Å¬·¡½º¿¡¼­ ±¸ÇöµÇ¾î¾ß ÇÑ´Ù.

	(4) ÀÎÅÍÆäÀÌ½º¸¸ ±¸ÇöÇÏ°í, Ãß»ó ¸Þ¼­µå¸¦ ±¸ÇöÇÏÁö ¾ÊÀº Å¬·¡½º´Â Ãß»ó Å¬·¡½º°¡ µÈ´Ù.

	(5) ÀÎÅÍÆäÀÌ½º´Â ¼±¾ð°ú ±¸ÇöÀ» ºÐ¸®½ÃÅ°¸ç, Ãß»ó ¸Þ¼­µå¸¦ ¹Ýµå½Ã ±¸ÇöÇØ¾ß ÇÏ´Â °­Á¦¼ºÀÌ ÀÖ¾î
	     ÀÎÅÍÆäÀÌ½º¸¦ ¸¸µç ÀÇµµ´ë·Î Å¬·¡½º¸¦ ±¸ÇöÇÒ ¼ö ÀÖ´Ù.

	(6) ÀÎÅÍÆäÀÌ½ºÀÇ Ãß»ó ¸Þ¼­µå´Â ±¸ÇöµÈ °ÍÀÌ ¾Æ´Ï¹Ç·Î Ä¿ÇÃ¸µ(´Ù¸¥ Å¬·¡½º¿¡ ´ëÇÑ ÀÇÁ¸¼º)À» ¶³¾î¶ß¸°´Ù.

	(7) ´ÙÁß »ó¼ÓÀ» Èä³»³½´Ù.

	---------------------------------------------------------------------------------------

	[ÀÎÅÍÆäÀÌ½º(interface)ÀÇ Æ¯Â¡]

	1) º¯¼ö´Â ÀÚµ¿À¸·Î »ó¼ö°¡ µÈ´Ù. (int a=1;Àº public final static int a=1;ÀÌ µÈ´Ù.)
	2) privateÀº »ç¿ëÇÏÁö ¸»°í ±âº» Á¢±Ù Á¦ÇÑÀÚ ÀÌ»óÀ» »ç¿ëÇÏÀÚ.
	    void show();´Â public abstract void show();°¡ µÈ´Ù. ±×·¡¼­ Ãß»ó ¸Þ¼­µå¶ó ºÒ¸°´Ù.
	3) void show();¿Í °°ÀÌ ¹Ùµð({})¸¦ ºÙÀÌÁö ¾Ê´Â´Ù. ¸Þ¼­µå ÀÌ¸§À» ³ª¿­ÇÑ´Ù.
	4) ÀÎÅÍÆäÀÌ½ºÀÇ Ãß»ó ¸Þ¼­µå¸¦ ±¸ÇöÇÏÁö ¸øÇÏ¸é ÀÚ½Ä Å¬·¡½º´Â Ãß»ó Å¬·¡½º°¡ µÈ´Ù.
	5) ÀÎÅÍÆäÀÌ½º°¡ ¿©·¯ °³ÀÏ ¶§,  ,(ÄÄ¸¶)¸¦ »ç¿ëÇÑ´Ù. (ex) Penguin implements IFish, IBird
	6) »ó¼ÓÀÌ ¿ì¼±ÀÌ´Ù. (ex) Penguin extends Animal implements IFish
	7) ÀÎÅÍÆäÀÌ½º´Â ¿©·¯°³ÀÇ ÀÎÅÍÆäÀÌ½º¸¦ »ó¼ÓÇÒ ¼ö ÀÖ´Ù.
	    (ex) IPenguin extends IAnimal, IFish, IBird

	=======================================================================================
*/
interface Flyer
{
	int fast = 100; // »ó¼ö°¡ µÊ
	void fly();
	boolean isAnimal();
}

class Bird implements Flyer
{
	public void fly()
	{
		System.out.println("³¯°³¸¦ ÈÖÀúÀ¸¸ç ³¯¾Æ°¨");
	}

	public boolean isAnimal()
	{
		return true;
	}
}

class Airplane implements Flyer
{
	public void fly()
	{
		System.out.println("¿£Áø°ú ³¯°³¸¦ ÀÌ¿ëÇÏ¿© ³¯¾Æ°¨");
	}

	public boolean isAnimal()
	{
			return false;
	}
}

class FlyerUtil
{
	public static void show(Flyer f)
	{
		f.fly();
		System.out.println(f.isAnimal());
	}
}

public class FlyerMain
{
	public static void main(String[] args)
	{
		System.out.println(Flyer.fast); // »ó¼ö

		Bird b = new Bird();
		FlyerUtil.show(b);

		Airplane ap = new Airplane();
		ap.fly();
		FlyerUtil.show(ap);

		Flyer f =new Bird();
		f.fly();

		System.out.println(f.isAnimal());
		FlyerUtil.show(f);

		Bird bf = (Bird)f;
		FlyerUtil.show(bf);
	}
}