13-1.Ãß»ó Ŭ·¡½º

13-1-1.Ãß»óÈ­

»ó¼ÓÀº ºÎ¸ðÀÇ ¼Ó¼ºÀ» ÀڽĿ¡°Ô ¹°·ÁÁÖ´Â °ÍÀÌ´Ï ¼ø¼­»ó ºÎ¸ð¸¦ ¸ÕÀú Á¤ÀÇÇØ¾ß ÇÑ´Ù. ±×·¯³ª »óÀ§ÀÇ ºÎ¸ð¸¦ Á¤ÀÇÇÏ·Á¸é ÀڽĵéÀÇ °øÅë ¼Ó¼ºÀ» Àß ÆľÇÇØ¾ß Çϴµ¥ À¢¸¸ÇÑ °æÇèÀ¸·Î´Â ÇÑ ¹ø¿¡ °èÃþÀ» ¿Ï¼ºÇϱ⠾î·Æ´Ù. ¿Ö³ÄÇϸé ÀÚ½ÄÀ» ¸¸µé¾î ºÁ¾ß ¾î¶² ¼Ó¼ºÀÌ °øÅëÀûÀÎÁö ÆľÇÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.

½ÇÁ¦ ¸ðµ¨¸µÇÒ ¶§´Â ÀÚ½Ä Å¬·¡½ºÀÇ ÁýÇÕÀ» ¸ÕÀú ¸¸µé°í °øÅëµÈ ¼Ó¼ºÀ» ÃßÃâÇÏ¿© ºÎ¸ð¸¦ Á¤ÀÇÇÏ´Â °ÍÀÌ ´õ ½±´Ù. »ç¶÷ÀÇ »ç°í´Â Ư¼öÇÑ °ÍÀ¸·ÎºÎÅÍ ÀϹݼºÀ» ÃßÃâÇØ ³»´Â °Í¿¡ ´õ Àͼ÷Çϱ⠶§¹®ÀÌ´Ù. »ç¹°ÀÇ °øÅë ¼Ó¼ºÀ» »Ì¾Æ Ŭ·¡½º °èÃþÀ» ¸¸µå´Â °úÁ¤À» Ãß»óÈ­¶ó°í ÇÑ´Ù.

Àͼ÷ÇÑ ½Ç»ýÈ°ÀÇ ¹°°ÇÀ» ´ë»óÀ¸·Î Ãß»óÈ­ °úÁ¤À» ½Ç½ÀÇØ º¸ÀÚ. ¹®¹æ±¸ °ü¸® ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù¸é ¹®±¸Á¡¿¡¼­ ÆÄ´Â Á¦Ç°À» Ŭ·¡½º·Î Ç¥ÇöÇØ¾ß ÇÑ´Ù. °¢Á¾ ¹®±¸·ùÀÇ Æ¯¼ºÀ» ÆľÇÇÏ°í ¾÷¹«¸¦ ºÐ¼®ÇÏ¿© ´ÙÀ½°ú °°Àº Ŭ·¡½º¸¦ ¸¸µé¾ú´Ù.

ÀÌ·¸°Ô Ŭ·¡½º·Î ¸¸µé¾î ³õ°í º¸´Ï Á¦Ç°¸¶´Ù Áߺ¹µÇ´Â ¼Ó¼ºÀÌ ¸¹´Ù. ¸ðµç Á¦Ç°Àº ¸ðµ¨¸íÀÌ ÀÖ°í Á¦Á¶»ç¿Í °¡°Ý¿¡ ´ëÇÑ Á¤º¸°¡ ÀÖ´Ù. ¿¹¸¦ µé¾î ¸ð³ª¹Ì 153 º¼Ææ 500¿øÂ¥¸®¶ó´Â ½ÄÀÌ´Ù. ¸ðµç Ŭ·¡½º°¡ ÀÌ ¼Ó¼ºÀ» °³º°ÀûÀ¸·Î º¸À¯ÇÒ ÇÊ¿ä´Â ¾øÀ¸´Ï °øÅë ¼Ó¼ºÀ» »Ì¾Æ ºÎ¸ð Ŭ·¡½º¸¦ Á¤ÀÇÇÏ°í ºÎ¸ð·ÎºÎÅÍ »ó¼Ó¹Þ´Â °ÍÀÌ ±¸Á¶»ó ¹Ù¶÷Á÷ÇÏ´Ù.

¹®¹æ±¸ÀÇ ¸ðµç Á¦Ç°À» ´ëÇ¥ÇÏ´Â ·çÆ® Ŭ·¡½º¿¡ ¹®±¸·ù¶ó´Â À̸§À» ºÙ¿´´Ù. °øÅë ¼Ó¼ºÀÌ ºÎ¸ðÂÊÀ¸·Î ¿Å°ÜÁ® ÀÚ½Ä Å¬·¡½º´Â °£´ÜÇØÁö¸ç ¸ðµç ¹®±¸·ù¸¦ ĪÇÏ´Â ´ëÇ¥ ŸÀÔÀÌ »ý°å´Ù. ÀÌ »óÅ¿¡¼­ ¿¬ÇÊ°ú º¼ÆæÀ» º¸¸é ±½±â¶ó´Â °øÅë ¼Ó¼ºÀÌ ¹ß°ßµÇ´Âµ¥ ÀÌ ¼Ó¼ºÀ» °¡Áö´Â Çʱâ·ù Ŭ·¡½º¸¦ Á¤ÀÇÇÏ°í ¿¬ÇÊ°ú º¼ÆæÀ» ±× ÇÏÀ§¿¡ µÐ´Ù.

Ŭ·¡½º ±¸Á¶´Â º¹ÀâÇØÁ³Áö¸¸ °èÃþÀÌ Çü¼ºµÇ¾î ÄÚµå °ü¸®´Â ´õ ½¬¿öÁø´Ù. °³¾÷ 1Áֳ⠱â³äÀ¸·Î °¡°Ý Æı« ´ëÀÜÄ¡¸¦ ÇÑ´Ù¸é ¸ðµç Á¦Ç°¿¡ ÇÒÀÎÀ² Á¤º¸°¡ ÇÊ¿äÇÏ´Ù. °èÃþÀÌ ¾ø´Ù¸é °¢ Ŭ·¡½º¿¡ ÇÒÀÎÀ² ¼Ó¼ºÀ» ÀÏÀÏÀÌ Ãß°¡ÇØ¾ß ÇÏÁö¸¸ °èÃþÀÌ Àß ±¸¼ºµÇ¾î ÀÖÀ¸¸é ·çÆ® Ŭ·¡½ºÀÎ ¹®±¸·ù¿¡¸¸ Ãß°¡ÇÏ¸é µÈ´Ù.

·çÆ® ÀÌÇÏÀÇ ¸ðµç Ŭ·¡½º¿¡ ÇÒÀÎÀ² Çʵ尡 ÀÚµ¿À¸·Î »ó¼ÓµÈ´Ù. º¼Ææ°ú ¿¬ÇÊ¿¡ ´ëÇؼ­¸¸ ÇÒÀÎ Çà»ç¸¦ ÇÑ´Ù¸é Çʱⱸ Ŭ·¡½º¿¡ ÇÒÀÎÀ²À» Ãß°¡ÇÑ´Ù. ¼Ó¼º¸¸ ºÁµµ ÀÌ Á¤µµ ÀåÁ¡ÀÌ ÀÖÀ¸¸ç ¸Þ¼­µå±îÁö °í·ÁÇÏ¸é ´ÙÇü¼ºÀÇ ÇýÅñîÁö ´©¸± ¼ö ÀÖ´Ù. ±×·¡¼­ ¾Ö½á Ŭ·¡½º °èÃþÀ» ±¸¼ºÇÏ´Â °ÍÀÌ´Ù.

13-1-2.°øµ¿ÀÇ Á¶»ó

Ŭ·¡½º¸¦ Çϳª¾¿ ¸¸µé¾î º¸¸ç Ãß»óÈ­ÀÇ ¿¹¸¦ ½Ç½ÀÇØ º¸ÀÚ. ±¹¹Î °ÔÀÓÀÎ ½ºÅ¸Å©·¡ÇÁÆ®¿¡´Â ¸¹Àº À¯´ÖÀÌ µîÀåÇÏ¿© ÀüÅõ¸¦ ¼öÇàÇϴµ¥ ¸¶¸°, Áú·µ, ¹ÂÅ» À¯´ÖÀ» Ŭ·¡½º·Î Á¤ÀÇÇØ º¸ÀÚ.

½ºÅ¸Å©·¡ÇÁÆ®¸¦ ÇØ º¸Áö ¾Ê¾Ò´õ¶óµµ ºñ½ÁÇÑ ´Ù¸¥ °ÔÀÓÀ» ¶°¿Ã·Á º¸¸é µÈ´Ù. ½Ã¹Ä·¹ÀÌ¼Ç °ÔÀÓÀº °ÅÀÇ ´Ù ºñ½ÁÇÏ´Ù. ´ÙÀ½ÀÌ Ã¹ ¹ø° ¿¹Á¦ÀÌ´Ù.

 

star

½ÇÇà°á°ú

class Marine {

     void move() { System.out.println("¾ÆÀå ¾ÆÀå"); }

     void attack() { System.out.println("µÎµÎµÎµÎµÎ"); }

     void bunker() { System.out.println("½ï~ ¼û¾úÁö·Õ"); }

}

 

class Zealot {

     void move() { System.out.println("µÚ¶× µÚ¶×"); }

     void attack() { System.out.println("¿ì°¼ ¿ì°¼ ìì"); }

}

 

class Mutal {

     void move() { System.out.println("ÆÛµæ ÆÛµæ"); }

     void attack() { System.out.println("»ïÁöâ È×È×"); }

}

 

class JavaTest {

     public static void main(String[] args) {

          Marine marine = new Marine();

          marine.move();

          marine.attack();

          Zealot zealot = new Zealot();

          zealot.move();

          zealot.attack();

     }

}

¾ÆÀå ¾ÆÀå

µÎµÎµÎµÎµÎ

µÚ¶× µÚ¶×

¿ì°¼ ¿ì°¼ ìì

 

°ÔÀÓ¿¡ µîÀåÇÏ´Â ¸ðµç À¯´ÖÀº ÁöÁ¤ÇÑ ÁÂÇ¥·Î À̵¿ÇÒ ¼ö ÀÖ°í Àû±ºÀ» ¸¸³ª¸é °ø°ÝÇÑ´Ù. À¯´Öº°·Î Ãß°¡ µ¿ÀÛÀ» ´õ °¡Áö´Âµ¥ ¸¶¸°Àº º¡Ä¿¿¡ ½ï µé¾î°¡ ¯¹ÚÈ÷´Â ±â´ÉÀÌ ÀÖ´Ù. À§ ¿¹Á¦ÀÇ Å¬·¡½º´Â °¢ À¯´ÖÀÌ ÇÒ ¼ö ÀÖ´Â µ¿ÀÛÀ» ¸Þ¼­µå·Î Ç¥ÇöÇÑ´Ù. ±×·¡ÇÈ È¯°æÀ̶ó¸é »ýµ¿°¨ ³ÑÄ¡´Â ¾Ö´Ï¸ÞÀ̼ÇÀ¸·Î Ç¥ÇöÇÏ°ÚÁö¸¸ ÄÜ¼Ö È¯°æÀÌ¶ó ¹®ÀÚ·Î Èä³»¸¸ ³½´Ù.

main¿¡¼­ ¸¶¸°°ú Áú·µ °´Ã¼¸¦ ¸¸µé¾î À̵¿ ¹× °ø°ÝÇØ ºÃ´Ù. Àß µ¿ÀÛÇÏÁö¸¸ °³º°ÀûÀΠŬ·¡½º·Î Á¤ÀǵǾî ÀÖ¾î °´Ã¼ÀÇ ÁýÇÕÀ» ´Ù·ç±â ¾î·Æ´Ù. °øµ¿ÀÇ Á¶»óÀÌ ¾ø¾î µ¶¸³ÀûÀΠŬ·¡½ºÀÏ »Ó »óÈ£ ¿¬°ü¼ºÀÌ ¾ø´Ù. ½Ã±×´Ïó°¡ °°Àº ¸Þ¼­µå¸¦ °¡Áö°í ÀÖÁö¸¸ ÄÄÆÄÀÏ·¯°¡ º¸±â¿¡´Â ¿ì¿¬È÷ °°À» »Ó ÀÌ Å¬·¡½ºµé°£¿¡ ¾î¶² °ü°è°¡ ÀÖ´ÂÁö ÆľÇÇÒ ¼ö ¾ø´Ù.

°èÃþÀ» ±¸¼ºÇÏ·Á¸é °øµ¿ÀÇ ¸â¹ö¸¦ Ãß·Á ºÎ¸ð Ŭ·¡½º¸¦ Á¤ÀÇÇÏ°í »ó¼Ó¹Þ¾Æ¾ß ÇÑ´Ù. ¼¼ À¯´ÖÀÌ ¸ðµÎ °¡Áö°í ÀÖ´Â move, attack ¸Þ¼­µå¸¦ »óÀ§ÀÇ Unit Ŭ·¡½º¿¡ ¼±¾ðÇÏ°í °¢ Ŭ·¡½º´Â UnitÀ¸·ÎºÎÅÍ »ó¼Ó¹Þ´Â´Ù.

 

unit

½ÇÇà°á°ú

class Unit {

     void move() { System.out.println("À̵¿"); }

     void attack() { System.out.println("°ø°Ý"); }

}

 

class Marine extends Unit {

     void move() { System.out.println("¾ÆÀå ¾ÆÀå"); }

     void attack() { System.out.println("µÎµÎµÎµÎµÎ"); }

     void bunker() { System.out.println("½ï~ ¼û¾úÁö·Õ"); }

}

 

class Zealot extends Unit {

     void move() { System.out.println("µÚ¶× µÚ¶×"); }

     void attack() { System.out.println("¿ì°¼ ¿ì°¼ ìì"); }

}

 

class Mutal extends Unit {

     void move() { System.out.println("ÆÛµæ ÆÛµæ"); }

     void attack() { System.out.println("»ïÁöâ È×È×"); }

}

 

class JavaTest {

     public static void main(String[] args) {

          Unit[] arUnit = {

                   new Marine(),

                   new Zealot(),

                   new Mutal(),

          };

         

          for (Unit u : arUnit) {

              u.move();

              u.attack();

          }

     }

}

¾ÆÀå ¾ÆÀå

µÎµÎµÎµÎµÎ

µÚ¶× µÚ¶×

¿ì°¼ ¿ì°¼ ìì

ÆÛµæ ÆÛµæ

»ïÁöâ È×È×

 

·çÆ®ÀÎ Unit¿¡ move¿Í attack ¸Þ¼­µå¸¦ ¼±¾ðÇÑ´Ù. À¯´Öº°·Î À̵¿ ¹× °ø°ÝÇÏ´Â ¹æ½ÄÀÌ ´Þ¶ó ÀÚ½Ä Å¬·¡½º´Â ÀÌ ¸Þ¼­µå¸¦ ½ÇÁ¦ À¯´Ö¿¡ ¸Â°Ô ÀçÁ¤ÀÇÇÑ´Ù. ÀÌ·¸°Ô Çϸé UnitÀ» ·çÆ®·Î ÇÏ´Â °èÃþÀÌ Çü¼ºµÇ¸ç ÈÄ¼Õ Å¬·¡½º´Â ÇüÁ¦ °ü°è°¡ µÇ¾î ´ÙÇü¼ºÀÇ ÀÌÁ¡À» ´©¸± ¼ö ÀÖ´Ù.

»ç¿ëÀÚ´Â °ÔÀÓÆÇÀ» µå·¡±×Çؼ­ °¢°¢ ´Ù¸¥ À¯´ÖÀ» ÇѲ¨¹ø¿¡ ¼±ÅÃÇÑ´Ù. °øµ¿ÀÇ Á¶»óÀÎ UnitÀÌ ÇÏÀ§ Ŭ·¡½º¸¦ ´ëÇ¥ÇϹǷΠUnit ŸÀÔÀÇ arUnit ¹è¿­¿¡ Unit ÆÄ»ý °´Ã¼¸¦ ÁýÇÕÀûÀ¸·Î ÀúÀåÇÒ ¼ö ÀÖ´Ù. °øµ¿ÀÇ Á¶»óÀÌ ¾ø´Ù¸é °¢ À¯´Öº°·Î ¹è¿­À» ¸¸µé°í ÀÏÀÏÀÌ ·çÇÁ¸¦ µ¹¾Æ¾ß ÇÏ´Ï ¹«Ã´ ºÒÆíÇÏ´Ù.

main¿¡¼­ arUnit ¹è¿­¿¡ ¸¶¸°, Áú·µ ¹ÂÅ» ¼¼ °³ÀÇ °´Ã¼¸¦ ÀúÀåÇØ ³õ°í ·çÇÁ¸¦ µ¹¸ç °¢ À¯´ÖÀÇ move¿Í attackÀ» È£ÃâÇß´Ù. ¹è¿­¿¡ ÀúÀåµÈ ¸ðµç °´Ã¼´Â UnitÀÇ ÈļÕÀ̹ǷΠmove, attack ¸Þ¼­µå°¡ Á¤ÀǵǾî ÀÖÀ¸¸ç ÀÌ È£Ãâ¹®ÀÌ ´ÙÇüÀûÀ¸·Î µ¿ÀÛÇÑ´Ù. À¯´Öº°·Î ¸Þ¼­µå¸¦ ÀçÁ¤ÀÇÇØ ³õ¾Ò±â ¶§¹®¿¡ °¢ÀÚÀÇ ¹æ¹ýÀ¸·Î À̵¿ÇÏ¸ç °ø°ÝÇÑ´Ù.

ÀÌ ¿¹Á¦´Â º¹¼ö°³ÀÇ À¯´Ö¿¡ ´ëÇØ À̵¿, °ø°Ý ¸í·ÉÀ» ³»·ÈÀ» ¶§ÀÇ µ¿ÀÛÀ» ´ÙÇüÀûÀ¸·Î ó¸®ÇÏ´Â È°¿ë¿¹ÀÌ´Ù. ´Ù¸¥ Á¾·ùÀÇ À¯´ÖÀ» °°ÀÌ ¼±ÅÃÇßÀ» ¶§´Â °øÅëÀûÀ¸·Î ³»¸± ¼ö ÀÖ´Â ÃÖ¼ÒÇÑÀÇ ¸í·É¸¸ ¼öÇàÇÒ ¼ö ÀÖ´Ù. ¸¶¸°°ú ÆÄÀ̾î¹îÀ» °°ÀÌ º¡Ä¿¿¡ ³ÖÀ» ¼ö´Â ÀÖÁö¸¸ ¸¶¸°°ú ÅÊÅ©¸¦ º¡Ä¿¿¡ ³ÖÁö´Â ¸øÇÑ´Ù. Unit ¹è¿­¿¡ ´ëÇØ Ã³¸®ÇÒ ¼ö ÀÖ´Â ¸í·ÉÀº UnitÀÇ ¸Þ¼­µå»ÓÀÌ¸ç °¢ À¯´Öº° °íÀ¯ µ¿ÀÛÀº ó¸®ÇÒ ¼ö ¾ø´Ù.

13-1-3.Ãß»ó ¸Þ¼­µå

¾Õ ¿¹Á¦ÀÇ Unit Ŭ·¡½º¸¦ Àß »ìÆ캸¸é ¹º°¡ ¾î»öÇÏ´Ù. UnitÀº ·çÆ® Ŭ·¡½ºÀÇ ¿ªÇÒÀ» ÇÏ´Â ´ëÇ¥ ŸÀÔÀÏ »Ó ½ÇÁ¦·Î °ÔÀÓ¿¡ µîÀåÇÏÁö ¾Ê´Â´Ù. ½ÇÁ¸ÇÏ´Â °´Ã¼°¡ ¾Æ´Ï¾î¼­ move¿Í attack ¸Þ¼­µå¸¦ ±¸Ã¼ÀûÀ¸·Î Á¤ÀÇÇÒ ¼ö ¾ø´Ù.

ÄÄÆÄÀÏÀ» À§ÇØ ±âº» µ¿ÀÛÀ» Á¤ÀÇÇØ ³õ¾ÒÁö¸¸ Unit ŸÀÔÀÇ °´Ã¼¸¦ ¸¸µé ÀÏÀÌ ¾ø°í ¸Þ¼­µå¸¦ È£ÃâÇÒ Àϵµ ¾ø¾î »ç½Ç ºÒÇÊ¿äÇÑ ÄÚµåÀÌ´Ù. UnitÀÇ move¿Í attackÀº ¸ðµç ÈļÕÀÌ À̵¿ÇÏ°í °ø°ÝÇÒ ¼ö ÀÖÀ½À» ÀǹÌÇÒ »ÓÀ̸ç Unit ÀÚü´Â ±¸Ã¼ÀûÀÎ µ¿ÀÛÀ» ÇÒ ¼ö ¾ø´Ù.

UnitÀÇ move, attackó·³ ³Ê¹« ÀϹÝÀûÀ̾ µ¿ÀÛÀ» Á¤ÀÇÇÒ ¼ö ¾ø´Â ¸Þ¼­µå¸¦ Ãß»ó ¸Þ¼­µå¶ó°í ÇÑ´Ù. Ãß»óÀûÀ̶ó´Â °ÍÀº ¹Ì¿Ï¼ºÀ̳ª ºÒ¿ÏÀüÇÏ´Ù´Â ¶æÀÌ´Ù. ¸¶¸°ÀÇ move´Â ¾ÆÀå ¾ÆÀå °È´Â µ¿ÀÛÀ» ±¸Ã¼ÀûÀ¸·Î Ç¥ÇöÇϸç Áú·µÀÇ moveµµ µÚ¶× µÚ¶× ¿òÁ÷ÀÓÀ» Àß ¹¦»çÇÑ´Ù. ±×·¯³ª UnitÀº ´ëÇ¥ ŸÀÔÀÏ »Ó ½ÇÁ¦ °´Ã¼¸¦ Ç¥ÇöÇÏÁö ¾Ê¾Æ move ¸Þ¼­µå¸¦ Á¤ÀÇÇÒ ¸¶¶¥ÇÑ ¹æ¹ýÀÌ ¾ø´Ù.

Ãß»ó ¸Þ¼­µå´Â abstract ÁöÁ¤ÀÚ¸¦ ºÙÀ̸ç { } ºí·Ï ¾øÀÌ ¼¼¹ÌÄÝ·ÐÀ¸·Î ³¡¸Î¾î º»Ã¼¸¦ »ý·«ÇÑ´Ù. µ¿ÀÛÀº Á¤ÀÇÇÏÁö ¾Ê°í ¸â¹ö·Î Æ÷Ç﵃ »ÓÀÌ´Ù. Ãß»ó ¸Þ¼­µå°¡ ÀÖÀ¸¸é Ŭ·¡½ºµµ Ãß»óÀÌ µÇ¸ç ¼±¾ð¹®¿¡ abstract Å°¿öµå¸¦ ºÙÀδÙ. ¾Õ ¿¹Á¦ÀÇ Unit Ŭ·¡½º ¼±¾ð¹®À» ´ÙÀ½°ú °°ÀÌ ¼öÁ¤Çصµ ¶È°°ÀÌ µ¿ÀÛÇÑ´Ù.

 

abstract

abstract class Unit {

     abstract void move();

     abstract void attack();

}

....

 

¸Þ¼­µå ¼±¾ð¹®¿¡ abstract ÁöÁ¤ÀÚ¸¦ ¸í½ÃÇÏ¿© Ãß»ó ¸Þ¼­µå·Î ¼±¾ðÇÏ°í move¿Í attackÀÇ ¾î»öÇÑ º»Ã¼ ÄÚµå´Â Á¦°ÅÇß´Ù. ¸â¹ö Áß Ãß»ó ¸Þ¼­µå°¡ ÀÖ¾î Unit Ŭ·¡½ºµµ Ãß»óÀÌ´Ù. UnitÀÇ ÈļÕÀº ÀÚ½ÅÀÇ Æ¯¼º¿¡ ¸Â°Ô ºÎ¸ðÀÇ ¹Ì¿Ï¼º ¸Þ¼­µå¸¦ ±¸Ã¼ÀûÀ¸·Î ¿Ï¼ºÇÑ´Ù. ºÎ¸ðÀÇ µ¿ÀÛÀÌ ¾Æ¿¹ Á¤ÀǵÇÁö ¾Ê¾Æ ÀçÁ¤ÀǺ¸´Ù ±¸ÇöÀ̶ó´Â Ç¥ÇöÀÌ ´õ ÀûÇÕÇÏ´Ù.

½ÇÇàÇØ º¸¸é ¾Õ ¿¹Á¦¿Í ¶È°°ÀÌ µ¿ÀÛÇÑ´Ù. ±×·¸´Ù¸é ±»ÀÌ Ãß»ó ¸Þ¼­µå·Î ¼±¾ðÇÏ´Â ÀÌÀ¯´Â ¹»±î? ¸Þ¼­µå¸¦ Ãß»óÀ¸·Î ¼±¾ðÇϸé Èļտ¡°Ô ±¸ÇöÀ» °­Á¦ÇÏ´Â È¿°ú°¡ ÀÖ´Ù. Ãß»ó ¸Þ¼­µå¸¦ ±¸ÇöÇÏÁö ¾ÊÀ¸¸é ²À ÇÊ¿äÇÑ µ¿ÀÛ Áß Çϳª¸¦ ¼öÇàÇÒ ¼ö ¾ø¾î Á¦´ë·Î µÈ À¯´ÖÀÌ ¾Æ´Ï´Ù. °¡·É Marine Ŭ·¡½º¸¦ ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇß´Ù°í ÇØ º¸ÀÚ.

 

class Marine extends Unit {

     void attack() { System.out.println("µÎµÎµÎµÎµÎ"); }

     void bunker() { System.out.println("½ï~ ¼û¾úÁö·Õ"); }

}

 

move ¸Þ¼­µå¸¦ ±¸ÇöÇÏÁö ¾Ê¾Ò´Ù. ºÎ¸ð Ŭ·¡½º°¡ ¹Ýµå½Ã ±¸ÇöÇ϶ó°í ¼±¾ðÇØ ³õÀº ¸Þ¼­µå¸¦ ´©¶ôÇÏ¿© ´ÙÀ½°ú °°Àº ¿¡·¯°¡ ¹ß»ýÇϸç ÄÄÆÄÀÏÀÌ °ÅºÎµÈ´Ù.

 

The type Marine must implement the inherited abstract method Unit.move()

 

MarineÀº UnitÀ¸·ÎºÎÅÍ »ó¼Ó¹ÞÀº move Ãß»ó ¸Þ¼­µå¸¦ ¹Ýµå½Ã ±¸ÇöÇØ¾ß ÇÑ´Ù´Â ¶æÀÌ´Ù. ºÎ¸ð Ŭ·¡½ºÀÎ UnitÀº À̵¿ ¹× °ø°ÝÀ» ±¸ÇöÇ϶ó°í °­Á¦Çϴµ¥ MarineÀº À̵¿ÇÒ ¼ö ¾ø¾î À¯´ÖÀÇ ¿ä°ÇÀ» ÃæÁ·ÇÏÁö ¸øÇßÀ¸¸ç ±¸ÇöÇØ¾ß ÇÒ ¸Þ¼­µå¸¦ »© ¸Ô¾úÀ¸´Ï ³í¸®ÀûÀÎ ¹®Á¦°¡ ¹ß»ýÇÑ´Ù.

ºÎ¸ðÀÇ ¸Þ¼­µå¸¦ ÀçÁ¤ÀÇÇÒ °ÍÀΰ¡´Â ÀÚ½ÄÀÌ ¼±ÅÃÀûÀ¸·Î °áÁ¤ÇÑ´Ù. ±×·¯³ª ºÎ¸ðÀÇ ¹Ì¿Ï¼º ¸Þ¼­µå¸¦ ÀçÁ¤ÀÇÇÏÁö ¾Ê°í ±×´ë·Î »ó¼Ó¹Þ¾Æ »ç¿ëÇÑ´Ù¸é Àڽĵµ Àǹ̾ø´Â µ¿ÀÛÀ» ÇÏ°Ô µÈ´Ù. UnitÀÌ Ãß»óÀÌ ¾Æ´Ï°í MarineÀÌ move¸¦ ÀçÁ¤ÀÇÇÏÁö ¾Ê¾ÒÀ» ¶§ÀÇ µ¿ÀÛÀ» ¿¹»óÇØ º¸ÀÚ.

 

class Unit {

     void move() { System.out.println("À̵¿"); }

     void attack() { System.out.println("°ø°Ý"); }

}

 

class Marine extends Unit {

     void attack() { System.out.println("µÎµÎµÎµÎµÎ"); }

     void bunker() { System.out.println("½ï~ ¼û¾úÁö·Õ"); }

}

 

¹®¹ýÀûÀ¸·Î´Â ¾Æ¹« ¹®Á¦°¡ ¾ø¾î ÄÄÆÄÀÏÀº Àß µÈ´Ù. MarineÀÌ move¸¦ ÀçÁ¤ÀÇÇÏÁö ¾Ê¾ÒÁö¸¸ ºÎ¸ðÀÇ move¸¦ »ó¼Ó¹Þ¾Æ ±×³É "À̵¿"À̶ó´Â Ãß»óÀûÀÎ µ¿ÀÛÀ» ÇÒ »ÓÀÌ´Ù. ¸¶¸°Àº ½ÇÁ¦ À¯´ÖÀ̹ǷΠ¿òÁ÷ÀÓÀÌ ±¸Ã¼ÀûÀ̾î¾ß Çϴµ¥ ±×·¸Áö ¸øÇϸç ÇÁ·Î±×·¥µµ ¹Ì¿Ï¼º »óÅ°¡ µÇ¾î ¹ö¸°´Ù.

ÀÏ¹Ý ¸Þ¼­µå´Â ÀçÁ¤ÀÇ ¿©ºÎ°¡ ¼±ÅÃÀûÀÌÁö¸¸ Ãß»ó ¸Þ¼­µå´Â °­Á¦ÀûÀ̾ ¹Ýµå½Ã ±¸ÇöÇØ¾ß ÇÑ´Ù. ºÎ¸ð°¡ ¿ä±¸ÇÑ Ãß»ó ¸Þ¼­µå¸¦ ±¸ÇöÇÏÁö ¾ÊÀ¸¸é ÀÚ½Ä °´Ã¼´Â Á¦´ë·Î µ¿ÀÛÇÒ ¼ö ¾ø´Ù. ÄÄÆÄÀÏ·¯´Â ÀÌ·± ºÒ¿ÏÀüÇÑ Äڵ忡 ´ëÇØ ¿¡·¯¸¦ ³»°í ÄÄÆÄÀÏÀ» °ÅºÎÇØ ±¸ÇöÀ» °­Á¦ÇÑ´Ù.

13-1-4.Ãß»ó Ŭ·¡½º

Ãß»ó ¸Þ¼­µå°¡ Çϳª¶óµµ ÀÖÀ¸¸é Ŭ·¡½º´Â ¹Ýµå½Ã Ãß»óÀ̾î¾ß ÇÑ´Ù. Ãß»ó Ŭ·¡½º´Â ¹Ì¿Ï¼ºÀÌ¸ç µû¶ó¼­ °´Ã¼¸¦ ¸¸µé ¼ö ¾ø´Ù. ¸Þ¼­µå Áß ÀϺÎÀÇ µ¿ÀÛÀÌ Á¤ÀǵÇÁö ¾Ê¾Æ °´Ã¼¸¦ ¸¸µé¾î ºÁ¾ß Á¦´ë·Î µ¿ÀÛÇÏÁöµµ ¾Ê´Â´Ù. ¸¸¾à ´ÙÀ½°ú °°Àº Äڵ带 Çã¿ëÇÑ´Ù°í ÇØ º¸ÀÚ.

 

class Unit {

     abstract void move();

     abstract void attack();

}

Unit unit = new Unit();

 

¸â¹öÁß Ãß»ó ¸Þ¼­µå°¡ Àִµ¥ Ŭ·¡½º´Â Ãß»óÀÌ ¾Æ´Ï¶ó¸é ÀÌ »óÅ¿¡¼­ unit °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù. ÀÌ »óÅ¿¡¼­ unit.move()¸¦ È£ÃâÇÏ¸é ¾î¶² µ¿ÀÛÀ» ÇÒ±î? ½ÇÇàÇÒ Äڵ尡 Á¤ÀǵǾî ÀÖÁö ¾ÊÀ¸¸ç µ¿ÀÛÀ» ±¸Ã¼È­ÇÒ ¼ö ¾ø¾î ÀÌ È£Ãâ¹®Àº ¹«È¿ÇÏ´Ù. ±×·¡¼­ ¾Æ¿¹ Ãß»ó ¸Þ¼­µå°¡ Àִ Ŭ·¡½º´Â °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ¾øµµ·Ï Ãß»óÀ¸·Î ¼±¾ðÇØ¾ß ÇÑ´Ù.

¿¹Á¦ÀÇ UnitÀº °èÃþµµ»óÀÇ ·çÆ® ŸÀÔÀÏ »Ó ½ÇÁ¦ Á¸ÀçÇÏ´Â À¯´ÖÀÌ ¾Æ´Ï¾î¼­ °´Ã¼¸¦ ¸¸µé ¼ö ¾ø´Ù. ±×·¡¼­ Ãß»ó ¸Þ¼­µå°¡ ´Ü Çϳª¶óµµ ÀÖÀ¸¸é Ŭ·¡½ºµµ ¹Ýµå½Ã Ãß»óÀ̾î¾ß ÇÑ´Ù. Ãß»ó Ŭ·¡½º·ÎºÎÅÍ °´Ã¼¸¦ »ý¼ºÇϸé ÀνºÅϽºÈ­ ÇÒ ¼ö ¾øÀ½(Cannot instantiate) ¿¡·¯°¡ ¹ß»ýÇÑ´Ù.

Ãß»ó ¸Þ¼­µå°¡ ¾ø´õ¶óµµ °´Ã¼È­¸¦ ±ÝÁöÇÏ°í ½Í´Ù¸é Ŭ·¡½º¸¦ Ãß»óÀ¸·Î ¼±¾ðÇÑ´Ù. ¿¹¸¦ µé¾î Á¤Àû ¸Þ¼­µå¸¸ Àܶà Á¤ÀÇµÈ Å¬·¡½º´Â ±»ÀÌ °´Ã¼·Î ¸¸µé ÇÊ¿ä°¡ ¾ø´Ù. Á¤Àû ¸Þ¼­µåÆí¿¡¼­ ¿¹¸¦ µç class Hello°¡ ÁÁÀº ¿¹ÀÌ´Ù.

 

abstract class Hello {

     static void morning() {

          System.out.println("ÁÁÀº ¾Æħ");

     }

     static void lunch() {

          System.out.println("Á¡½É ¸Ô¾ú¾î?");

     }

     static void evening() {

          System.out.println("¼ú ÇÑÀÜ ¾î¶§");

     }

}

 

ÀÌ·¸°Ô ¼±¾ðÇÏ´Â °ÍÀÌ ¿Ç´Ù. ±×·¸Áö ¾ÊÀ¸¸é new Hello() ±¸¹®À¸·Î °´Ã¼¸¦ ¸¸µé ¼ö ÀÖ´Ù. Hello´Â ¸Þ¼­µåÀÇ ÁýÇÕÀ» Á¤ÀÇÇϴ Ŭ·¡½ºÀÏ »Ó ¼Ó¼ºÀÌ ¾ø¾î °´Ã¼¸¦ ¸¸µé ÇÊ¿ä°¡ ¾ø´Ù. ¾Æ¿¹ ¸¸µéÁö ¸øÇϵµ·Ï ±ÝÁöÇØ ¹ö¸®´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. °°Àº ÀÌÀ¯·Î Mathµµ Ãß»ó Ŭ·¡½ºÀÌ´Ù. ¼öÇÐ ¸Þ¼­µå¸¸ ÀÜ¶à µé¾î ÀÖÀ¸¸ç Á¤Àû ¸Þ¼­µå´Â °´Ã¼ ¾øÀ̵µ È£Ãâ °¡´ÉÇÏ´Ï Math °´Ã¼¸¦ ¸¸µé ÀÌÀ¯°¡ ¾ø´Ù.

Ãß»ó Ŭ·¡½º´Â °´Ã¼¸¦ ¸¸µé±â À§ÇÑ Æ²À̶ó±â º¸´Ù´Â ÇÏÀ§ÀÇ ÀÚ½Ä Å¬·¡½º¸¦ Á¤ÀÇÇϱâ À§ÇÑ °øÅëÀÇ ±â´ÉÀ» °¡Áö´Â ƲÀÌ´Ù. ¸ðµç Ŭ·¡½º°¡ °øÅëÀ¸·Î °¡Á®¾ß ÇÒ ¸â¹öÀÇ ¸ñ·ÏÀ» Á¤ÀÇÇÏ°í ´ëÇ¥ ŸÀÔÀ¸·Î »ç¿ëµÈ´Ù. Ãß»óÀ̶ó´Â ¸» ÀÚü°¡ ´Ù¼Ò ¾î·Á¿îµ¥ Á» ´õ Á÷°üÀûÀÎ ¿¹·Î µ¿¹°ÀÇ °èÃþÀ» »ý°¢ÇØ º¸ÀÚ.

ÀÌ °èÃþ¿¡¼­ °³³ª ¼Ò´Â ½Ç¼¼°è¿¡ Á¸ÀçÇÏ´Â »ç¹°ÀÌ¸ç °´Ã¼¸¦ ¸¸µé ¼ö ÀÖ´Ù. ¸Ô°í, ÀÚ°í, ¹ø½ÄÇÏ°í ¸ðµç µ¿ÀÛÀÌ ±¸Ã¼ÀûÀÌ´Ù. ±×·¯³ª µ¿¹°À̳ª Æ÷À¯·ù´Â ºÐ·ùÀÇ ÇϳªÀÏ »Ó ½ÇÁ¦ µ¿¹°ÀÌ ¾Æ´Ñ Ãß»óÀûÀÎ °³³äÀÌ´Ù. ¸Ô°í, ÀÜ´Ù´Â µ¿ÀÛÀ» ÇÒ ¼ö ÀÖ´Ù´Â °Í¸¸ Ç¥ÇöÇÒ »Ó ±¸Ã¼ÀûÀÎ µ¿ÀÛÀ» Á¤ÀÇÇÒ ¼ö ¾ø´Ù. ÀÌ·± Ŭ·¡½º°¡ Ãß»óÀÌ´Ù.

¹®¹æ±¸ ¿¹Á¦ÀÇ ¹®±¸·ù¿Í Çʱⱸµµ Ãß»ó Ŭ·¡½º·Î ¼±¾ðÇÏ´Â °ÍÀÌ ¿Ç´Ù. ¿¬ÇÊÀ̳ª º¼ÆæÀº Á¦Á¶»ç°¡ ÀÖ°í °¡°Ýµµ È®Á¤ÀûÀÌÁö¸¸ ¹®±¸·ù ÀÚü¿¡´Â °¡°ÝÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. ±×³É °¡°ÝÀ̶ó´Â Çʵ尡 ÀÖÀ½À» Á¤ÀÇÇÒ »ÓÀÌ´Ù. ¶Ç ¾Õ Àå¿¡¼­ º¸ÀÎ °´Ã¼ ±³Ã¼ ¿¹¿¡¼­ Transport Ŭ·¡½ºµµ Ãß»óÀ¸·Î ¼±¾ðÇÏ´Â °ÍÀÌ ÀÚ¿¬½º·´´Ù.

 

abstract class Transport {

     abstract void ride();

}

 

ÀÚÀü°Å³ª ¿ÀÅä¹ÙÀÌ´Â ºÐ¸í Ÿ°í ´Ù´Ò ¼ö ÀÖ´Â ±³Åë ¼ö´ÜÀ̸ç ride ¸Þ¼­µå°¡ ±¸Ã¼ÀûÀÌ´Ù. ±×·¯³ª À̵éÀÇ ·çÆ® Ŭ·¡½ºÀÎ Transport´Â ¸·¿¬ÇÏ°í °³³äÀûÀÎ Å»°ÍÀ» ´ëÇ¥ÇÒ »Ó ½ÇÁ¦·Î Ÿ°í ´Ù´Ï´Â °ÍÀº ¾Æ´Ï´Ù. ±×·¡¼­ ride ¸Þ¼­µå°¡ Ãß»óÀÌ¸ç µû¶ó¼­ Transport Ŭ·¡½ºµµ Ãß»óÀ̾î¾ß ÇÑ´Ù. Ãß»óÀÇ °³³äÀ» ¹è¿ì±â ÀüÀ̶ó ¾î¿ ¼ö ¾øÀÌ ÀÏ¹Ý Å¬·¡½º·Î ÀÛ¼ºÇßÁö¸¸ ¾î»öÇÑ Äڵ忴¾ú´Ù.