»ó¼ÓÀº ºÎ¸ðÀÇ ¼Ó¼ºÀ» ÀڽĿ¡°Ô ¹°·ÁÁÖ´Â °ÍÀÌ´Ï ¼ø¼»ó ºÎ¸ð¸¦ ¸ÕÀú Á¤ÀÇÇØ¾ß ÇÑ´Ù. ±×·¯³ª »óÀ§ÀÇ ºÎ¸ð¸¦ Á¤ÀÇÇÏ·Á¸é ÀڽĵéÀÇ °øÅë ¼Ó¼ºÀ» Àß ÆľÇÇØ¾ß Çϴµ¥ À¢¸¸ÇÑ °æÇèÀ¸·Î´Â ÇÑ ¹ø¿¡ °èÃþÀ»
¿Ï¼ºÇϱ⠾î·Æ´Ù. ¿Ö³ÄÇϸé ÀÚ½ÄÀ» ¸¸µé¾î ºÁ¾ß ¾î¶² ¼Ó¼ºÀÌ °øÅëÀûÀÎÁö ÆľÇÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.
½ÇÁ¦ ¸ðµ¨¸µÇÒ ¶§´Â ÀÚ½Ä Å¬·¡½ºÀÇ ÁýÇÕÀ» ¸ÕÀú ¸¸µé°í °øÅëµÈ ¼Ó¼ºÀ» ÃßÃâÇÏ¿© ºÎ¸ð¸¦ Á¤ÀÇÇÏ´Â °ÍÀÌ ´õ ½±´Ù. »ç¶÷ÀÇ »ç°í´Â Ư¼öÇÑ °ÍÀ¸·ÎºÎÅÍ ÀϹݼºÀ» ÃßÃâÇØ ³»´Â °Í¿¡ ´õ Àͼ÷Çϱ⠶§¹®ÀÌ´Ù. »ç¹°ÀÇ °øÅë ¼Ó¼ºÀ» »Ì¾Æ Ŭ·¡½º °èÃþÀ» ¸¸µå´Â °úÁ¤À» Ãß»óȶó°í ÇÑ´Ù.
Àͼ÷ÇÑ ½Ç»ýÈ°ÀÇ ¹°°ÇÀ» ´ë»óÀ¸·Î Ãß»óÈ °úÁ¤À» ½Ç½ÀÇØ º¸ÀÚ. ¹®¹æ±¸
°ü¸® ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù¸é ¹®±¸Á¡¿¡¼ ÆÄ´Â Á¦Ç°À» Ŭ·¡½º·Î Ç¥ÇöÇØ¾ß ÇÑ´Ù. °¢Á¾ ¹®±¸·ùÀÇ Æ¯¼ºÀ» ÆľÇÇÏ°í
¾÷¹«¸¦ ºÐ¼®ÇÏ¿© ´ÙÀ½°ú °°Àº Ŭ·¡½º¸¦ ¸¸µé¾ú´Ù.
ÀÌ·¸°Ô Ŭ·¡½º·Î ¸¸µé¾î ³õ°í º¸´Ï Á¦Ç°¸¶´Ù Áߺ¹µÇ´Â ¼Ó¼ºÀÌ ¸¹´Ù. ¸ðµç
Á¦Ç°Àº ¸ðµ¨¸íÀÌ ÀÖ°í Á¦Á¶»ç¿Í °¡°Ý¿¡ ´ëÇÑ Á¤º¸°¡ ÀÖ´Ù. ¿¹¸¦ µé¾î ¸ð³ª¹Ì 153 º¼Ææ 500¿øÂ¥¸®¶ó´Â ½ÄÀÌ´Ù.
¸ðµç Ŭ·¡½º°¡ ÀÌ ¼Ó¼ºÀ» °³º°ÀûÀ¸·Î º¸À¯ÇÒ ÇÊ¿ä´Â ¾øÀ¸´Ï °øÅë ¼Ó¼ºÀ» »Ì¾Æ ºÎ¸ð Ŭ·¡½º¸¦ Á¤ÀÇÇÏ°í ºÎ¸ð·ÎºÎÅÍ »ó¼Ó¹Þ´Â °ÍÀÌ ±¸Á¶»ó
¹Ù¶÷Á÷ÇÏ´Ù.
¹®¹æ±¸ÀÇ ¸ðµç Á¦Ç°À» ´ëÇ¥ÇÏ´Â ·çÆ® Ŭ·¡½º¿¡ ¹®±¸·ù¶ó´Â À̸§À» ºÙ¿´´Ù. °øÅë
¼Ó¼ºÀÌ ºÎ¸ðÂÊÀ¸·Î ¿Å°ÜÁ® ÀÚ½Ä Å¬·¡½º´Â °£´ÜÇØÁö¸ç ¸ðµç ¹®±¸·ù¸¦ ĪÇÏ´Â ´ëÇ¥ ŸÀÔÀÌ »ý°å´Ù. ÀÌ »óÅ¿¡¼
¿¬ÇÊ°ú º¼ÆæÀ» º¸¸é ±½±â¶ó´Â °øÅë ¼Ó¼ºÀÌ ¹ß°ßµÇ´Âµ¥ ÀÌ ¼Ó¼ºÀ» °¡Áö´Â Çʱâ·ù Ŭ·¡½º¸¦ Á¤ÀÇÇÏ°í ¿¬ÇÊ°ú º¼ÆæÀ» ±× ÇÏÀ§¿¡ µÐ´Ù.
Ŭ·¡½º ±¸Á¶´Â º¹ÀâÇØÁ³Áö¸¸ °èÃþÀÌ Çü¼ºµÇ¾î ÄÚµå °ü¸®´Â ´õ ½¬¿öÁø´Ù. °³¾÷ 1Áֳ⠱â³äÀ¸·Î °¡°Ý Æı« ´ëÀÜÄ¡¸¦ ÇÑ´Ù¸é ¸ðµç Á¦Ç°¿¡ ÇÒÀÎÀ² Á¤º¸°¡ ÇÊ¿äÇÏ´Ù.
°èÃþÀÌ ¾ø´Ù¸é °¢ Ŭ·¡½º¿¡ ÇÒÀÎÀ² ¼Ó¼ºÀ» ÀÏÀÏÀÌ Ãß°¡ÇØ¾ß ÇÏÁö¸¸ °èÃþÀÌ Àß ±¸¼ºµÇ¾î ÀÖÀ¸¸é ·çÆ® Ŭ·¡½ºÀÎ ¹®±¸·ù¿¡¸¸ Ãß°¡ÇÏ¸é µÈ´Ù.
·çÆ® ÀÌÇÏÀÇ ¸ðµç Ŭ·¡½º¿¡ ÇÒÀÎÀ² Çʵ尡 ÀÚµ¿À¸·Î »ó¼ÓµÈ´Ù. º¼Ææ°ú
¿¬ÇÊ¿¡ ´ëÇؼ¸¸ ÇÒÀÎ Çà»ç¸¦ ÇÑ´Ù¸é Çʱⱸ Ŭ·¡½º¿¡ ÇÒÀÎÀ²À» Ãß°¡ÇÑ´Ù. ¼Ó¼º¸¸ ºÁµµ ÀÌ Á¤µµ ÀåÁ¡ÀÌ
ÀÖÀ¸¸ç ¸Þ¼µå±îÁö °í·ÁÇÏ¸é ´ÙÇü¼ºÀÇ ÇýÅñîÁö ´©¸± ¼ö ÀÖ´Ù. ±×·¡¼ ¾Ö½á Ŭ·¡½º °èÃþÀ» ±¸¼ºÇÏ´Â °ÍÀÌ´Ù.
Ŭ·¡½º¸¦ Çϳª¾¿ ¸¸µé¾î º¸¸ç Ãß»óÈÀÇ ¿¹¸¦ ½Ç½ÀÇØ º¸ÀÚ. ±¹¹Î °ÔÀÓÀÎ
½ºÅ¸Å©·¡ÇÁÆ®¿¡´Â ¸¹Àº À¯´ÖÀÌ µîÀåÇÏ¿© ÀüÅõ¸¦ ¼öÇàÇϴµ¥ ¸¶¸°, Áú·µ,
¹ÂÅ» À¯´ÖÀ» Ŭ·¡½º·Î Á¤ÀÇÇØ º¸ÀÚ.
½ºÅ¸Å©·¡ÇÁÆ®¸¦ ÇØ º¸Áö ¾Ê¾Ò´õ¶óµµ ºñ½ÁÇÑ ´Ù¸¥ °ÔÀÓÀ» ¶°¿Ã·Á º¸¸é µÈ´Ù. ½Ã¹Ä·¹À̼Ç
°ÔÀÓÀº °ÅÀÇ ´Ù ºñ½ÁÇÏ´Ù. ´ÙÀ½ÀÌ Ã¹ ¹ø° ¿¹Á¦ÀÌ´Ù.
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ÀÇ
¸Þ¼µå»ÓÀÌ¸ç °¢ À¯´Öº° °íÀ¯ µ¿ÀÛÀº ó¸®ÇÒ ¼ö ¾ø´Ù.
¾Õ ¿¹Á¦ÀÇ 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¸¦ »ó¼Ó¹Þ¾Æ ±×³É "À̵¿"À̶ó´Â Ãß»óÀûÀÎ µ¿ÀÛÀ» ÇÒ »ÓÀÌ´Ù. ¸¶¸°Àº ½ÇÁ¦ À¯´ÖÀ̹ǷΠ¿òÁ÷ÀÓÀÌ ±¸Ã¼ÀûÀ̾î¾ß Çϴµ¥ ±×·¸Áö ¸øÇϸç ÇÁ·Î±×·¥µµ ¹Ì¿Ï¼º »óÅ°¡ µÇ¾î ¹ö¸°´Ù.
ÀÏ¹Ý ¸Þ¼µå´Â ÀçÁ¤ÀÇ ¿©ºÎ°¡ ¼±ÅÃÀûÀÌÁö¸¸ Ãß»ó ¸Þ¼µå´Â °Á¦ÀûÀÌ¾î¼ ¹Ýµå½Ã ±¸ÇöÇØ¾ß ÇÑ´Ù. ºÎ¸ð°¡ ¿ä±¸ÇÑ Ãß»ó ¸Þ¼µå¸¦ ±¸ÇöÇÏÁö ¾ÊÀ¸¸é ÀÚ½Ä °´Ã¼´Â Á¦´ë·Î µ¿ÀÛÇÒ ¼ö ¾ø´Ù. ÄÄÆÄÀÏ·¯´Â ÀÌ·± ºÒ¿ÏÀüÇÑ Äڵ忡 ´ëÇØ ¿¡·¯¸¦ ³»°í ÄÄÆÄÀÏÀ» °ÅºÎÇØ ±¸ÇöÀ» °Á¦ÇÑ´Ù.
Ãß»ó ¸Þ¼µå°¡ Çϳª¶óµµ ÀÖÀ¸¸é Ŭ·¡½º´Â ¹Ýµå½Ã Ãß»óÀ̾î¾ß ÇÑ´Ù. Ãß»ó
Ŭ·¡½º´Â ¹Ì¿Ï¼ºÀÌ¸ç µû¶ó¼ °´Ã¼¸¦ ¸¸µé ¼ö ¾ø´Ù. ¸Þ¼µå Áß ÀϺÎÀÇ µ¿ÀÛÀÌ Á¤ÀǵÇÁö ¾Ê¾Æ °´Ã¼¸¦ ¸¸µé¾î
ºÁ¾ß Á¦´ë·Î µ¿ÀÛÇÏÁöµµ ¾Ê´Â´Ù. ¸¸¾à ´ÙÀ½°ú °°Àº Äڵ带 Çã¿ëÇÑ´Ù°í ÇØ º¸ÀÚ.
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 Ŭ·¡½ºµµ Ãß»óÀ̾î¾ß
ÇÑ´Ù. Ãß»óÀÇ °³³äÀ» ¹è¿ì±â ÀüÀ̶ó ¾î¿ ¼ö ¾øÀÌ ÀÏ¹Ý Å¬·¡½º·Î ÀÛ¼ºÇßÁö¸¸ ¾î»öÇÑ Äڵ忴¾ú´Ù.