Ŭ·¡½ºÀÇ ÀϹÝÀû ±¸Á¶¿¡¼ ¾÷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 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 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°ÀÇ ÀúÀÚ:ÃÖ¿µ°ü |