¼Ò¼³°°ÀºC#  Á¦5°­ÀÇ C#ÀÇ ´ÙÇü¼º  19. Ãß»óŬ·¡½º¿Í ÀÎÅÍÆäÀ̽º¿¡¼­ÀÇ Upcasting  

 

5.19 Ãß»óŬ·¡½º¿Í ÀÎÅÍÆäÀ̽º¿¡¼­ÀÇ Upcasting

¿ì¸®´Â ¾÷ij½ºÆÃ(Upcasting)À» ÀϹÝÀûÀΠŬ·¡½º ±¸Á¶¿¡¼­¸¸ »ìÆìº¸¾Ò½À´Ï´Ù. ÇÏÁö¸¸ À̰ÍÀº Ãß»óŬ·¡½º¿Í ÀÎÅÍÆäÀ̽º¿¡¼­µµ Àû¿ë µÉ ¼ö ÀÖ½À´Ï´Ù. ±× ±¸Á¶´Â ´ÙÀ½°ú °°À» °ÍÀÔ´Ï´Ù.

 

±×¸² 5-8 »ó¼Ó¿¡¼­ÀÇ Upcasting

±×¸² 5-9 ÀÎÅÍÆäÀ̽º¿¡¼­ÀÇ Upcasting

 

Ãß»óŬ·¡½º¿Í ÀÎÅÍÆäÀ̽º¸¦ ´Ù·ç¸é¼­ ´ÙÀ½°ú °°Àº Áú¹®À» ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

 

n                 Ãß»óŬ·¡½º´Â °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ¾ø´Ù

n                 ÀÎÅÍÆäÀ̽º´Â °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ¾ø´Ù

 

¿ì¸®´Â Ç×»ó ÀÌ·¯ÇÑ ¸»¿¡ ºÎµúÈ÷°Ô µË´Ï´Ù. ÀÌ ¹®Á¦¿¡ ´ëÇØ ´Ù½Ã Çѹø Á¤¸®Çϸé Ãß»óŬ·¡½º¿Í ÀÎÅÍÆäÀ̽º´Â °´Ã¼¸¦ »ý¼ºÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¸¸µé¾îÁø °´Ã¼¸¦ ÇÒ´ç ¹Þ´Â °ÍÀÔ´Ï´Ù. ÇüÀÌ °°±â ¶§¹®¿¡ ÀÌ·¯ÇÑ °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ¾øÀ¸´Ï ´ç¿¬ Ãß»óŬ·¡½º¿Í ÀÎÅÍÆäÀ̽º´Â new ¿¬»êÀÚ¸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. ´ÜÁö ¸¸µé¾îÁø °´Ã¼¸¦ ¾÷ij½ºÆÃ(Upcasting)À» ÀÌ¿ëÇØ¼­ ³Ñ°Ü ¹ÞÀ» »ÓÀÔ´Ï´Ù. ÀÌ·¯ÇÑ °ÍÀº ¸¹Àº ÀåÁ¡À» ³»Æ÷Çϰí ÀÖ½À´Ï´Ù. ¾Ë°í º¸¸é ÀÎÅÍÆäÀ̽º(Interface)´Â ºó ²®µ¥±â¿¡ ºÒ°ú ÇÕ´Ï´Ù.

 

±×¸² 5-10 ÀÎÅÍÆäÀ̽º ±¸ÇöÀ» ÅëÇÑ Å¬·¡½º »ý¼º

 

À§ÀÇ ±×¸² ¿©·¯ °³ÀÇ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ µÚ ¾÷ij½ºÆÃ(Upcasting)À» ÀÌ¿ëÇÏ¿© »ç¿ëÀÚ´Â »ý¼ºµÈ °´Ã¼ÀÇ ÂüÁ¶°ªÀ» ÀÎÅÍÆäÀ̽º·Î ¾òÀ» ¼ö ÀÖÀ¸¸ç ÀÎÅÍÆäÀ̽º·Î ¸¸À¸·Îµµ ÀÛ¾÷ÇÒ ¼ö ÀÖ´Ù.

 

»ç¿ëÀÚ´Â ºó ²®µ¥±â¸¸ °¡Áö°í À־ ¸ðµç ÀÛ¾÷À» ÀüºÎ ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. À§ÀÇ ±×¸²¿¡¼­´Â ¼³¸íÀ» À§Çؼ­ ÀÓÀÇÀÇ ÀÎÅÍÆäÀ̽º¸¦ ¸¸µé¾ú½À´Ï´Ù. ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇØ¼­ ¿ì¸®´Â ´ÙÀ½°ú °°Àº Äڵ带 ÀÛ¼ºÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

 

n                 Shape s = new Circle();

n                 Action a = new Circle();

n                 Attribute ab = new Circle();

n                 Circle c = new Circle();

 

ÀÌ ÄÚµåÀÇ ÀåÁ¡Àº »ç¿ëÀÚ´Â ³»ºÎ¸¦ ¸ô¶óµµ µÈ´Ù´Â °ÍÀÔ´Ï´Ù. ÀÎÅÍÆäÀ̽º¸¸ ÀÖ´Ù¸é ¾î¶°ÇÑ ÀÛ¾÷ÀÌ¶óµµ ÀüºÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ÀåÁ¡Àº ¿ì¸®°¡ Á÷Á¢ ¸¸µé¾î¼­ ÀÛ¾÷Çϱ⺸´Ù´Â ³»ºÎÀûÀ¸·Î ÀÌ·ç¾îÁö´Â °æ¿ì°¡ ¾ÆÁÖ ¸¹½À´Ï´Ù. ÇÏÁö¸¸ À̰ÍÀ» Àß ÀÌ¿ëÇÏ¸é º¸´Ù Á¤±³ÇÑ ÇÁ·Î±×·¥ÀÛ¾÷À» ÇÒ ¼ö ÀÖÀ¸¸®¶ó »ý°¢µË´Ï´Ù.

 

¿©·¯ºÐµéÀÌ Àß ¸ð¸£°í »ç¿ëÇÏ´Â ¾÷ij½ºÆÃ(Upcasting)Àº ¾ÆÁÖ ¸¹Àº ÀåÁ¡À» Á¦°øÇϰí ÀÖ½À´Ï´Ù. ´ÙÇü¼º(Polymorphism)À» ÁÖÀåÇÏ´Â ¾÷ij½ºÆÃ(Upcasting)ÀÇ ÀåÁ¡Àº abstract, ÀÎÅÍÆäÀ̽º(Interface), ÀºÆó(Encapsulation), ¿À¹ö¶óÀ̵ù(Overriding) µî ¾ÆÁÖ ¸¹Àº ºÎºÐ°ú °ü·ÃÀÌ ÀÖ½À´Ï´Ù. ÀÌ ¾÷ij½ºÆÃ(Upcasting)°ú ÀÎÅÍÆäÀ̽º(Interface)¿¡ ´ëÇØ¼­ Á¦´ë·Î ÀÌÇØÇß´Ù¸é ´ÙÇü¼º(Polymorphism)Àº ¹Ù·Î ¿©·¯ºÐµéÀÇ ¼Õ¿¡ ÀÖ´Â °ÍÀÔ´Ï´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºC# Á¦5°­ÀÇ
ÀúÀÚ:ÃÖ¿µ°ü