¼Ò¼³°°ÀºC#  Á¦5°­ÀÇ C#ÀÇ ´ÙÇü¼º  17. ¾÷ij½ºÆÃ(Upcasting)À̶õ?  

 

5.17 ¾÷ij½ºÆÃ(Upcasting)À̶õ?

 

Ŭ·¡½ºÀÇ ÀϹÝÀû ±¸Á¶¿¡¼­ ¾÷ij½ºÆÃ(Upcasting)À̶õ ÇÏÀ§Å¬·¡½º°¡ »óÀ§Å¬·¡½º·Î ij½ºÆÃ(Casting)ÇÏ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. »óÀ§Å¬·¡½º·Î ij½ºÆÃ(Casting)ÇÒ ¶§ ¿ì¸®´Â ´Ü¼øÈ÷ ij½ºÆÃ(Casting) µÇ´Â±¸³ª! ÀÌ·¸°Ô¸¸ »ý°¢ÇÏÁö ±× ±íÀº Àǹ̴ µûÁöÁö ¾Ê½À´Ï´Ù. ÀÌ Àå¿¡¼­´Â ÀϹÝÀûÀÎ ¾÷ij½ºÆÃ(Upcasting)ÀÇ ÀÇ¹Ì¿Í ½ÇÁ¦ ¾÷ij½ºÆÃ(Upcasting)ÀÌ Àû¿ëµÇ´Â ºÎºÐÀ» Á¶»çÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

¸Þ¼­µå¸¦ ÀçÁ¤ÀÇ ÇÑ °æ¿ì´Â new Ű¿öµå¸¦ ÀÌ¿ëÇÏ¿© ÀçÁ¤ÀÇ ÇÑ °æ¿ì¿Í virtualÀ» ÀçÁ¤ÀÇÇÑ °æ¿ì µÎ°¡Áö·Î ³ª´©¾î »ý°¢ÇØ º¼ ¼ö ÀÖ½À´Ï´Ù.

 

¢Ã ¸Þ¼­µå ÀçÁ¤ÀÇ¿¡¼­ÀÇ ¾÷ij½ºÆÃ(Upcasting)

q                new Ű¿öµå¸¦ ÀÌ¿ëÇÑ ¸Þ¼­µå ÀçÁ¤ÀÇ¿¡¼­ ³ªÅ¸³ª´Â ¾÷ij½ºÆÃ

q                virtual Ű¿öµå¸¦ ÀÌ¿ëÇÑ ¸Þ¼­µå ÀçÁ¤ÀÇ¿¡¼­ ³ªÅ¸³ª´Â ¾÷ij½ºÆÃ

 

new Ű¿öµé »ç¿ëÇÑ ¸Þ¼­µå ÀçÁ¤ÀÇ¿¡¼­ÀÇ ¾÷ij½ºÆÃ

¸Þ¼­µå¸¦ ÀçÁ¤ÀÇ ÇÒ ¶§ ¾Æ¹«·± Ç¥½Ã ¾øÀÌ ÀçÁ¤ÀÇ ÇÑ´Ù¸é ¿¡·¯¸¦ ¹ß»ýÇÑ´Ù´Â °ÍÀ» 4ÀåÀÇ ¸Þ¼­µå ¹«½ÃÇϱ⿡¼­ ¾Ë¾Æ º¸¾Ò½À´Ï´Ù. ÀÌ ¶§ new Ű¿öµå¸¦ »ç¿ëÇÏ¿´½À´Ï´Ù. new Ű¿öµå¸¦ »ç¿ëÇÏ¿© ÀçÁ¤ÀÇ ÇÒ ¶§ ¾÷ij½ºÆÃÀº °¡´ÉÇÕ´Ï´Ù. ´ÙÀ½Àº new Ű¿öµå¸¦ »ç¿ëÇÏ¿© ¸Þ¼­µå¸¦ ÀçÁ¤ÀÇ ÇÑ ÈÄ ¾÷ij½ºÆÃÀ» Àû¿ëÇÑ ¿¹Á¦ÀÔ´Ï´Ù.

 

&

UpCastingNew.cs

Ü new Ű¿öµå ¿¡¼­ÀÇ Upcasting

using System;

class Base{

       public void MethodA() {

               Console.WriteLine("Base Method()");

       }

}

class UpCastingNew: Base{

       new public void MethodA() {

               Console.WriteLine("UpCastingNew Method()");

      }                                                  

          public static void Main(){

               UpCastingNew m = new UpCastingNew();

               m.MethodA();

                                                  

                    Base b = m;//¾÷ij½ºÆÃ Àû¿ë

            b.MethodA();

       }//main

}//class

C:\C#Example\05>csc UpCastingNew.cs

C:\C#Example\05>UpCastingNew

UpCastingNew Method()

Base Method()

 

ÀÌ ¿¹Á¦¿¡¼­ ÇÏÀ§Å¬·¡½º UpCastingNew´Â »óÀ§Å¬·¡½º Base·Î ¾÷ij½ºÆÃ µÇ¾ú½À´Ï´Ù. ¾÷ij½ºÆÃÇÏ´Â °ÍÀº ´ÙÀ½°ú °°½À´Ï´Ù.

 

n                  Base b = new MethodHide();

 

¿©±â¼­ ¾ÆÁÖ Áß¿äÇÑ »ç½ÇÀº Base Ŭ·¡½º¿Í UpCastingNew Ŭ·¡½º µÑ´Ù MethodA() ¸Þ¼­µå¸¦ º¸À¯Çϰí ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ ¶§ »óÀ§ Ŭ·¡½ºÀÇ À̸§À» °¡Áø Áï, ¾÷ij½ºÆÃ µÈ °´Ã¼ b´Â »óÀ§Å¬·¡½ºÀÇ MethodA() ¸Þ¼­µå¸¦ È£ÃâÇÏ°Ô µË´Ï´Ù.

 

Áß¿ä !! ¢Ã new Ű¿öµå¸¦ ÀÌ¿ëÇÑ ¸Þ¼­µå ÀçÁ¤ÀÇ¿¡¼­ ³ªÅ¸³ª´Â ¾÷ij½ºÆÃ

q                ¾÷ij½ºÆÃ µÈ »óÀ§Å¬·¡½ºÀÇ °´Ã¼´Â »óÀ§Å¬·¡½º ³»ÀÇ ¸Þ¼­µå¸¸À» È£ÃâÇÑ´Ù.

q                ¾ÆµéÀÇ ¸öüÁö¸¸ ¾Æ¹öÁöÀÇ À̸§À̶ó¸é ¾Æ¹öÁöÀÇ ¸Þ¼­µå¸¸ È£ÃâÇÒ ¼ö ÀÖ´Ù.

 

¾ÆÁÖ ´ç¿¬ÇÑ ¸»ÀÔ´Ï´Ù. »óÀ§Å¬·¡½ºÀÇ À̸§À¸·Î »óÀ§Å¬·¡½º ³»ÀÇ ¸Þ¼­µå¸¸À» È£ÃâÇÑ´Ù´Â °ÍÀº ³Ê¹«³ª ´ç¿¬ÇÑ À̾߱âÀÔ´Ï´Ù. ÇÏÁö¸¸ ÀÌ·¯ÇÑ Çö»óÀº virtual·Î ¾÷ij½ºÆÃ ÇßÀ» ¶§´Â ÀüÇô ´Ù¸¥ °á°ú¸¦ °¡Á®¿É´Ï´Ù.

 

virtual Ű¿öµé »ç¿ëÇÑ ¸Þ¼­µå ÀçÁ¤ÀÇ¿¡¼­ÀÇ ¾÷ij½ºÆÃ

»óÀ§Å¬·¡½º¿¡¼­ virtual Ű¿öµå¸¦ »ç¿ëÇÑ´Ù¸é ÇÏÀ§Å¬·¡½º¿¡¼­´Â override Ű¿öµå¸¦ »ç¿ëÇÏ¿© ¸Þ¼­µå¸¦ ÀçÁ¤ÀÇÇØ¾ß ÇÕ´Ï´Ù. virtual°ú override Ű¿öµå¸¦ »ç¿ëÇÏ¿© ¸Þ¼­µå¸¦ ÀçÁ¤ÀÇ ÇÏ¿´´Ù¸é »óÀ§Å¬·¡½º·Î ¾÷ij½ºÆÃÀÌ °¡´ÉÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¿¹Á¦¸¦ °¨»óÇϽÃÁÒ.

 

&

UpCastingVirtual.cs

Ü °¡»ó¸Þ¼­µåÀÇ ±¸Çö¿¡¼­ÀÇ Upcasting

using System;

class Base{

      virtual public void MethodA() {

             Console.WriteLine("Base Method()");

      }

}

class UpCastingVirtual : Base{

      override public void MethodA() {

             Console.WriteLine("UpCastingVirtual Method()");

      }                                                   

        public static void Main(){

             UpCastingVirtual m = new UpCastingVirtual();

             m.MethodA();

                                                  

                 Base b = m;//¾÷ij½ºÆÃ µÈ ºÎºÐ

          b.MethodA();

     }//main

}//class

C:\C#Example\05>csc UpCastingVirtual.cs

C:\C#Example\05>UpCastingVirtual

UpCastingVirtual Method()

UpCastingVirtual Method()

 

ºÐ¸í new Ű¿öµå¸¦ »ç¿ëÇßÀ» ¶§¿Í °°ÀÌ ¾÷ij½ºÆÃÀ» Çϰí ÀÖ½À´Ï´Ù. ±×¸®°í Base Ŭ·¡½º¿Í UpCastingVirtual Ŭ·¡½º µÑ´Ù MethodA() ¸Þ¼­µå¸¦ º¸À¯Çϰí ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ±×·±µ¥ À§ÀÇ ¿¹Á¦¿¡¼­´Â »óÀ§Å¬·¡½ºÀÇ À̸§À¸·Î ÇÏÀ§Å¬·¡½ºÀÇ ¸Þ¼­µå¸¦ È£ÃâÇϰí ÀÖ½À´Ï´Ù.

 

Áß¿ä !! ¢Ã virtual Ű¿öµå¸¦ ÀÌ¿ëÇÑ ¸Þ¼­µå ÀçÁ¤ÀÇ¿¡¼­ ³ªÅ¸³ª´Â ¾÷ij½ºÆÃ

q                »óÀ§Å¬·¡½ºÀÇ À̸§À¸·Î ¸Þ¼­µå¸¦ È£ÃâÇßÀ» ¶§ ÇØ´ç ¸Þ¼­µå°¡ ÀçÁ¤ÀÇ µÇ¾î ÀÖÀ» °æ¿ì¿¡¸¸ ÇÏÀ§Å¬·¡½ºÀÇ ¸Þ¼­µå È£Ãâ

q                ¾ÆµéÀÇ ¸öüÁö¸¸ ¾Æ¹öÁöÀÇ À̸§À¸·Î ¾ÆµéÀÇ ¸Þ¼­µå È£ÃâÇÑ´Ù.

 

»óÀ§Å¬·¡½º·Î ¾÷ij½ºÆÃ µÇ¾úÀ» ¶§ »óÀ§Å¬·¡½ºÀÇ À̸§À¸·Î´Â »óÀ§Å¬·¡½ºÀÇ ¸Þ¼­µå¸¸À» È£ÃâÇÕ´Ï´Ù. ÇÏÁö¸¸ »óÀ§Å¬·¡½º¿¡ Á¸ÀçÇÏ´Â ¸Þ¼­µå°¡ ÇÏÀ§Å¬·¡½º¿¡¼­ ÀçÁ¤ÀÇ µÇ¾úÀ» °æ¿ì¿¡¸¸ ÇÏÀ§Å¬·¡½ºÀÇ ¸Þ¼­µå¸¦ È£ÃâÇÏ°Ô µË´Ï´Ù. À̰ÍÀº ¾÷ij½ºÆÃ¿¡¸¸ ¹ß»ýÇÏ´Â °¡»ó¸Þ¼­µåÀÇ ÀǹÌÀÔ´Ï´Ù.



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