/*
      ======================================================================================
      Ãß»ó Å¬·¡½º

      1) abstract Å°¿öµå¸¦ »ç¿ë
      2) Ãß»ó Å¬·¡½º´Â ÀÚ±â ÀÌ¸§À¸·Î ÀÚ½ÅÀÇ °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ¾øÀ¸¸ç, Ãß»ó Å¬·¡½º¸¦ »ó¼ÓÇÑ ÀÚ½Ä Å¬·¡½ºÀÇ
          °´Ã¼¸¦ »ý¼ºÇÏ¿© »ç¿ëÇÑ´Ù.
      3) Ãß»ó ¸Þ¼­µå´Â ¹Ýµå½Ã ÀÚ½Ä Å¬·¡½º¿¡¼­ ¿À¹ö¶óÀÌµùÇÏ¿© ±¸ÇöÇØ¾ß ÇÑ´Ù.
          ±×·¸Áö ¾ÊÀ¸¸é ÀÚ½Äµµ Ãß»ó Å¬·¡½º°¡ µÈ´Ù.
      4) Ãß»ó Å¬·¡½º´Â ¹Ýµå½Ã ÀÚ½ÄÀ» °¡Á®¾ß ÇÑ´Ù.

      --------------------------------------------------------------------------------------

      [Ãß»ó Å¬·¡½º°¡ µÇ´Â 3°¡Áö °æ¿ì]

	  1) Ãß»ó ¸Þ¼­µå°¡ 1°³ ÀÌ»óÀÏ ¶§
	  2) Ãß»ó Å¬·¡½º¸¦ »ó¼ÓÇßÁö¸¸ Ãß»ó ¸Þ¼­µå¸¦ ¿À¹ö¶óÀÌµùÇÏÁö ¾Ê°Å³ª,
	      ÀÎÅÍÆäÀÌ½º¸¦ ±¸ÇöÇßÁö¸¸ ¸Þ¼­µå¸¦ ±¸ÇöÇÏÁö ¾Ê¾ÒÀ» ¶§
	  3) Ãß»ó ¸Þ¼­µå°¡ ¾ø´Âµ¥ °­Á¦·Î »ó¼ÓÇÏ¿© »ç¿ëÇÏ·Á´Â °æ¿ì

      ======================================================================================
*/

abstract class Ship
{
	public abstract int move(); // »ç¶÷À» ¸î ¸í ³ª¸£´Â°¡?
	public abstract int carry(); // ¹«±â¸¦ ¸î Á¤ ³ª¸£´Â°¡?
}

class Boat extends Ship
{
	public int move()
	{
		return 6;
	}// »ç¶÷À» ¸î ¸í ³ª¸£´Â°¡?

	public int carry()
	{
		return 0;
	} // ¹«±â¸¦ ¸î Á¤ ³ª¸£´Â°¡?

	public String name()
	{
		return "½ß½ß º¸Æ®: ";
	}
}

class Cruise extends Ship
{
	public int move()
	{
		return 300;
	}// »ç¶÷À» ¸î ¸í ³ª¸£´Â°¡?

	public int carry()
	{
		return 200;
	}// ¹«±â¸¦ ¸î Á¤ ³ª¸£´Â°¡?
	public String name()
	{
		return "ÀüÇÔ ¹«±ÃÈ­: ";
	}
}

class ShipUtil
{
	public static void search(Ship s)
	{
		System.out.println(s.move());
		System.out.println(s.carry());

		if(s instanceof Boat)
		{
			Boat b = (Boat)s;
			System.out.println("Boat ÀÌ¸§: "+b.name());
		}
		else if(s instanceof Cruise)
		{
			Cruise b = (Cruise)s;
			System.out.println("Cruise ÀÌ¸§: "+b.name());
		}
	}
}

public class ShipMain
{
	public static void main(String[] args)
	{
		Ship ship1 = new Boat();
		Ship ship2 = new Cruise();

		System.out.println(ship1.move());
		System.out.println(ship1.carry());
		System.out.println(ship2.move());
		System.out.println(ship2.carry());

		ShipUtil.search(ship2);
	}
}