´ÙÇü¼º(Polymorphism)À̶õ, ÇѰ¡Áö·Î ¿©·¯ °¡ÁöÀÇ ÀÏÀ» ÇÑ´Ù´Â ¶æÀÔ´Ï´Ù. ÇÁ·Î±×·¥¿¡¼ ÇϳªÀÇ ÇüÅ·Π¿©·¯ °¡Áö ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù¸é À̰ÍÀÌ ¹Ù·Î ´ÙÇü¼ºÀÇ ¿ø ¶æ ±×´ë·ÎÀÔ´Ï´Ù. C#¿¡¼ ÀÌ·¯ÇÑ Çö»óÀº ¾ÆÁÖ ¸¹Àº °÷¿¡¼ ³ªÅ¸³³´Ï´Ù. ¿À¹ö·Îµù(Overloading) ¸Þ¼µå´Â ÀÌ·¯ÇÑ ´ÙÇü¼ºÀÇ ¿ø¸®¸¦ Àß ¼³¸íÇØ ÁÖ°í ÀÖ½À´Ï´Ù. ÇϳªÀÇ ¸Þ¼µåÀÇ À̸§À» ÀÌ¿ëÇÏ¿© ¿©·¯ °³ÀÇ ¸Þ¼µå¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¹Ù·Î ¿À¹ö·ÎµùÀÔ´Ï´Ù. ÇϳªÀÇ ¸Þ¼µå À̸§À¸·Î ¿©·¯ °¡Áö ÀÛ¾÷À» µ¿½Ã¿¡ ÇÒ ¼ö Àִٴ Ư¼ºÀÌ ÀÖÀ¸´Ï ´ÙÇü¼ºÀÇ ¿ø¸®¸¦ Æ÷ÇÔÇÑ´Ù°í ÇÒ ¼ö ÀÖ½À´Ï´Ù.
|
¢Ã ´ÙÇü¼º(Polymorphism)À̶õ? |
|
q ÇϳªÀÇ ÇüÅ·Π¿©·¯ °¡Áö ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Â ¼ºÁú |
´ÙÇü¼ºÀÇ ¼ºÁúÀÌ °¡Àå Àß ³ªÅ¸³ª´Â °÷Àº »ó¼Ó(Inheritance)ÀÔ´Ï´Ù. ¹°·Ð, ´Ù¸¥ °÷¿¡¼µµ ÀÌ·¯ÇÑ ´ÙÇü¼ºÀº Ç¥ÃâµÇ°í ÀÖÁö¸¸ ¿©·¯ºÐÀÌ ½±°Ô Á¢ÇÒ ¼ö ÀÖ´Â °÷Àº ¹Ù·Î »ó¼Ó¿¡¼ ³ªÅ¸³ª´Â °´Ã¼ÁöÇâÀÇ ±â¹ý¿¡¼ ½±°Ô ãÀ» ¼ö ÀÖ½À´Ï´Ù. ´ÙÇü¼ºÀÇ ¿¹¸¦ ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù.
|
¢Ã ´ÙÇü¼º(Polymorphism)À̶õ ÀÌ Àû¿ë µÇ´Â °÷ |
|
q ¿À¹ö·Îµù(Overloading) q ¿À¹ö¶óÀ̵ù(Overriding) q ¾÷ij½ºÆÃ(Upcasting) q ´Ù¿îij½ºÆÃ(Downcasting) q Ãß»óŬ·¡½º(Abstract Class) ÀÇ »ó¼Ó °ü°è q ÀÎÅÍÆäÀ̽º(Interface)ÀÇ »ó¼Ó °ü°è |
À̵é Áß¿¡¼µµ ¾÷ij½ºÆÃ(Upcasting) °³³äÀÌ ´ÙÇü¼ºÀ» ´ëÇ¥ÇÑ´Ù°í À̾߱â ÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¾÷ij½ºÆÃ(Upcasting)¿¡¼ ´Ù¾çÇÑ ÇÁ·Î±×·¥À» ÇÒ ¼ö ÀÖ°Ô µµ¿Í ÁÖ´Â ºÎºÐÀÌ ¸¹±â ¶§¹®ÀÏ °ÍÀÔ´Ï´Ù.
¾÷ij½ºÆÃ(Upcasting)À̶õ »óÀ§Å¬·¡½º·Î ÇÏÀ§Å¬·¡½º¸¦ ij½ºÆÃÇÏ´Â ´ÙÇü¼ºÀÇ ÇÙ½ÉÀûÀÎ ºÎºÐÀÔ´Ï´Ù. ¾÷ij½ºÆÃÀ» ¾Ë°íÀÚ ÇÑ´Ù¸é »ó¼Ó(Inheritance)Àº ¹«Á¶°ÇÀûÀ¸·Î ¾Ë¾Æ¾ß µÇ°í ¿À¹ö¶óÀ̵ù(Overriding)°ú ¾÷ij½ºÆÃ(Upcasting)Àº Á÷Á¢ÀûÀ¸·Î °ü·Ã ÀÖÀ¸´Ï ¹Ýµå½Ã ¼÷Áö ÇØ¾ß¸¸ ÇÏ´Â °´Ã¼ÁöÇâ °³³äÀÔ´Ï´Ù. ±×¸®°í Ãß»óŬ·¡½º(Abstract Class)¿Í ÀÎÅÍÆäÀ̽º(Interface)¿¡¼ ³ªÅ¸³ª´Â »ó¼Ó°ú ±¸ÇöÀÇ ¹®Á¦µµ ÀÌ ¾÷ij½ºÆÃ°ú Á÷Á¢ °ü·ÃÀÌ ÀÖ½À´Ï´Ù. ¾Ë°í º¸¸é ¾÷ij½ºÆÃÀº ´ëºÎºÐÀÇ °´Ã¼ÁöÇâ °³³äµéÀ» ¸ð¾ÆµÐ °Í °°Àº ´À³¦ÀÌ °ÇÕ´Ï´Ù. ±×·¡¼ ¾÷ij½ºÆÃÀÌ C#ÀÇ ´ÙÇü¼º(Polymorphism)À» ´ëÇ¥ÇÑ´Ù°í À̾߱⸦ ÇÏ´Â °Í °°½À´Ï´Ù.
¿ì¸®´Â »ó¼ÓºÎºÐÀ» °øºÎÇÏ¸é¼ ¾÷ij½ºÆÃ¿¡ ´ëÇØ¼ ¹è¿ü½À´Ï´Ù. »ó¼Ó¿¡¼ ¡®¾÷ij½ºÆÃ(Upcasting)Àº ÀÌ·±°Å¾ß!¡¯ ¶ó´Â Á¤µµ¹Û¿¡´Â ¾ð±ÞÇÏÁö ¾Ê¾Ò½À´Ï´Ù. ¾÷ij½ºÆÃÀÌ µµ´ëü ¾îµð¿¡ ÁÁÀºÁöµµ ¸ð¸£°í ±×³É ±×·¸°Ô ÇÁ·Î±×·¥ ÇÏ¸é µÈ´Ù´Â ½ÄÀ¸·Î ´ëÃæ ÇÁ·Î±×·¥À» ÇÏ´Â °æ¿ì°¡ ¸¹½À´Ï´Ù.
¶ÇÇÑ, C#¿¡¼´Â ´Ù¸¥ ¾ð¾î¿¡¼ º¸Áö ¸øÇÑ Boxing°ú UnBoxingÀÇ °³³äÀÌ µîÀåÇÕ´Ï´Ù. °ªÅ¸ÀÔ(Value Type)°ú ÂüÁ¶Å¸ÀÔ(Reference Type)ÀÌ ¼·Î Çü º¯È¯À» °¡´ÉÇÏ°Ô ¸¸µé¾î ÁÖ´Â ±â¹ýÀÔ´Ï´Ù. °ªÅ¸ÀÔÀÌ ÂüÁ¶Å¸ÀÔÀ¸·Î ÂüÁ¶Å¸ÀÔÀÌ °ªÅ¸ÀÔÀ¸·Î º¯È¯ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀº ´ÙÇü¼ºÀÇ ºÎ·ù¿¡ ¼ÓÇÑ´Ù°í º¼ ¼ö ÀÖ½À´Ï´Ù.
|
¢Ã ´ÙÇü¼ºÀ» Áö¿øÇϱâ À§ÇÑ µµ±¸ |
|
q Ãß»óŬ·¡½º(Abstract Class) q ÀÎÅÍÆäÀ̽º(Interface) q ¾÷ij½ºÆÃ(Upcasting)°ú ´Ù¿îij½ºÆÃ(Downcasting) q Boxing, UnBoxing q Delegate |
ÀÌ Àå¿¡¼ ÇÙ½ÉÀûÀ¸·Î ´Ù·ç°í ÀÖ´Â Ãß»óŬ·¡½º(Abstract Class), ÀÎÅÍÆäÀ̽º(Interface), ¾÷ij½ºÆÃ(Upcasting)°ú ´Ù¿îij½ºÆÃ(Downcasting), ¹Ú½Ì(Boxing)°ú ¾ð¹Ú½Ì(UnBoxing), µ¨¸®°ÔÀÌÆ®(Delegate) µîÀº ¸ðµÎ ´ÙÇü¼º(Polymorphism)À» Áö¿øÇϱâ À§ÇÑ °·ÂÇÑ µµ±¸ÀÔ´Ï´Ù. À̵éÀ» ºÐ¼®ÇØ ³ª°¡¸é¼ C#¿¡¼ »ç¿ëµÇ´Â ´ÙÇü¼º(Polymorphism)¿¡ ´ëÇÑ ´À³¦À» ã¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
| jabookÀúÀÚ¸íÇÔ |