¼Ò¼³°°ÀºC#  Á¦4°­ÀÇ C#ÀÇ °´Ã¼ÁöÇâ  17. base Ű¿öµå  

 

 

4.17 base Ű¿öµå

 

¾Æ¹öÁöŬ·¡½º·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ¾Ò´Ù¸é ¾Æ¹öÁöŬ·¡½ºÀÇ ¸ðµç °ÍÀº ¾ÆµéŬ·¡½º °ÍÀÌ µË´Ï´Ù. ±×·¡¼­ ¾ÆµéŬ·¡½º¿¡¼­´Â ¾Æ¹öÁö °Íµµ ³» °ÍÀÌ¿ä, ³» °Íµµ ³» °ÍÀÌ µÇ´Ï this¶ó´Â Ű¿öµå¸¦ »ç¿ëÇØ¼­ ¾Æ¹öÁöÀÇ ¸â¹ö¿¡ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð ¾Æ¹öÁöÀÇ publicÀ̳ª protected Á¢±ÙÁöÁ¤ÀÚ¸¦ »ç¿ëÇÏ´Â ¸â¹ö¿¡¸¸ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº ³Ê¹«³ª ´ç¿¬ÇÑ »ó¼Ó °³³äÀÔ´Ï´Ù.

 

¾Æ¹öÁöŬ·¡½º¸¦ »ó¼Ó ¹Þ°í ¾ÆµéŬ·¡½º¿¡¼­ ¸Þ¼­µå¸¦ ÀçÁ¤ÀÇÇÑ ÈÄ, ¾ÆµéŬ·¡½º ³»ºÎ¿¡¼­ ±× ¸Þ¼­µå¸¦ È£ÃâÇÑ´Ù¸é, ¹«Á¶°Ç ¾ÆµéÀÇ ÀçÁ¤ÀÇ ¸Þ¼­µå°¡ È£ÃâµË´Ï´Ù. ÀçÁ¤ÀÇ ÀÚü´Â ¾Æ¹öÁöÀÇ ¸Þ¼­µå¸¦ ¹«½ÃÇϰí Àֱ⠶§¹®ÀÔ´Ï´Ù. ±×·±µ¥ ¾Æµé ÀÔÀå¿¡¼­ º»´Ù¸é ¾ÆµéÀº ÀÚ½ÅÀÇ ÀçÁ¤ÀÇµÈ ¸Þ¼­µå¿Í ¾Æ¹öÁöÀÇ ¹«½Ã´çÇÑ ¸Þ¼­µå 2°³°¡ Á¸ÀçÇÕ´Ï´Ù. ¾Æµé ÀÔÀå¿¡¼­ ¾Æ¹öÁöÀÇ ¸Þ¼­µå¸¦ È£Ãâ ÇϰíÀÚ ÇÑ´Ù¸é ¾î¶»°Ô ÇÒ±î¿ä?

 

base.»óÀ§Å¬·¡½º¸â¹ö

ÀÚ½ÅÀÌ ÀçÁ¤ÀÇÇÑ ¾Æ¹öÁöÀÇ ¸Þ¼­µå¸¦ È£ÃâÇÒ ¼ö ÀÖ°Ô ÇÒ ¸¸Å­ ¾Æ¹öÁö Ŭ·¡½º´Â ³Ê±×·¯¿ï±î¿ä? ¹°·ÐÀÌÁÒ. ¿ì¸®ÀÇ ¾Æ¹öÁöµéó·³. ¹«½Ã´çÇÑ ¾Æ¹öÁö Ŭ·¡½ºÀÇ ¸Þ¼­µå¸¦ È£ÃâÇÏ´Â ¹æ¹ýÀÌ ¹Ù·Î base ÂüÁ¶º¯¼ö¸¦ ÀÌ¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. base´Â this¿Í °°Àº ¿ø¸®·Î µ¿ÀÛ µË´Ï´Ù. ±×·¡¼­ base ÀÚü´Â µðÀÚÀΟÀÓ¿¡ ¾Æ¹öÁö¸¦ ÂüÁ¶ÇÏ´Â À¯ÀÏÇÑ ÂüÁ¶º¯¼öÀÔ´Ï´Ù.

 

&

NewSon.cs

Ü base.»óÀ§Å¬·¡½º¸â¹ö

using System;

public class NewFather {

     public virtual void OverrideFunc(){

               Console.WriteLine("¾Æ¹öÁöÀÇ ÇÔ¼ö");

     }

}

public class NewSon : NewFather {

     public override void OverrideFunc(){

               Console.WriteLine("¾ÆµéÀÇ ÀçÁ¤ÀÇ ÇÔ¼ö");

     }

     public void TestFunc() {

               base.OverrideFunc();//NewFatherÀÇ ¸Þ¼­µå È£Ãâ

     }

       public static void Main() {

           NewSon ns = new NewSon();

           ns.OverrideFunc();

           ns.TestFunc();

     }

}

C:\C#Example\04>csc NewSon.cs

C:\C#Example\04>NewSon

¾ÆµéÀÇ ÀçÁ¤ÀÇ ÇÔ¼ö

¾Æ¹öÁöÀÇ ÇÔ¼ö

 

À§ÀÇ ¿¹Á¦¿¡¼­ ¾Æ¹öÁöŬ·¡½ºÀÇ ¸Þ¼­µå´Â ¾ÆµéŬ·¡½º¿¡µµ °°Àº À̸§À¸·Î Á¸ÀçÇϱ⠶§¹®¿¡, ¾ÆµéÀÔÀå¿¡¼­, Áï, ¾ÆµéÀÇ Å¬·¡½º ³»ºÎ¿¡¼­´Â ¾Æ¹öÁöÀÇ ¹«½ÃÇÑ ¸Þ¼­µå¸¦ È£ÃâÇÒ ¹æ¹ýÀÌ ¾ø½À´Ï´Ù. ¾ÆµéŬ·¡½º ³»ºÎ¿¡¼­ ¾Æ¹öÁöŬ·¡½ºÀÇ ¸Þ¼­µå¸¦ »ç¿ëÇÏ°í ½Í´Ù¸é base¶ó´Â Ű¿öµå¸¦ »ç¿ëÇÏ¸é µÇ´Â °ÍÀÔ´Ï´Ù.

 

Base Ű¿öµå¸¦ »ç¿ëÇÑ ¿¹

 public void TestFunc(){

    base.OverrideFunc();

}                                           

 

TestFunc() ¸Þ¼­µå¿¡¼­ base¸¦ ÀÌ¿ëÇÏ¿© ¾Æ¹öÁöÀÇ ¸Þ¼­µå¸¦ È£ÃâÇϰí ÀÖ½À´Ï´Ù. ÀÚ½ÅÀÇ ¸Þ¼­µå¿Í ¾Æ¹öÁöÀÇ ¸Þ¼­µå¸¦ ±¸ºÐÇϱâ À§Çؼ­ À̰ÍÀ» »ç¿ëÇÏ´Â °ÍÀÌÁö º°´Ù¸¥ °ÍÀº ¾ø½À´Ï´Ù.

 

»óÀ§Å¬·¡½ºÀÇ »ý¼ºÀÚ¸¦ È£ÃâÇÏ´Â base()

»ó¼ÓÀ» ¹Þ¾ÒÀ» °æ¿ì ¾Æ¹öÁöŬ·¡½ºÀÇ »ý¼ºÀÚ°¡ ¸Å°³º¯¼ö¸¦ °¡Áö°í ÀÖ´Ù¸é ¾î¶»°Ô µÉ±î¿ä? Àß »ý°¢ÇØ º¸¸é ¾î·µç ¾Æ¹öÁöŬ·¡½ºÀÇ »ý¼ºÀÚ°¡ È£Ãâ µÈ ÈÄ¿¡ ¾ÆµéÀÇ »ý¼ºÀÚ°¡ È£ÃâµÇ´Â °ÍÀº ´ç¿¬ÇÑ ÀÏÀÔ´Ï´Ù. ±×·¸´Ù¸é ¾ÆµéÀÌ »ó¼ÓÀ» ¹Þ¾ÒÀ» °æ¿ì ¾Æ¹öÁöÀÇ »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö´Â ´©°¡ ³Ö¾î ÁÙ ¼ö ÀÖÀ»±î¿ä? ¾Æ¹öÁöÀÇ »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö¸¦ ³Ö¾îÁÖÁö ¾Ê¾Æµµ ¾Æ¹öÁöÀÇ »ý¼ºÀÚ°¡ È£Ãâ °¡´ÉÇÒ±î¿ä? À̰ÍÀº ºÒ°¡´ÉÇÕ´Ï´Ù. ¹«Á¶°ÇÀûÀ¸·Î, Àý´ëÀûÀ¸·Î, »ý¼ºÀÚ¿¡ ¸Å°³º¯¼ö°¡ Á¸ÀçÇÑ´Ù¸é »ý¼ºÀÚÀÇ ¸Å°³º¯¼öÀÇ Çü°ú °³¼ö¸¦ ¸ÂÃß¾î ÁÖ¾î¾ß¸¸ È£Ãâ °¡´ÉÇÕ´Ï´Ù. »ó¼ÓÀ» ¾ÆµéŬ·¡½º°¡ ¹Þ¾Æ ¹ö¸° »óŶó¸é ¾ÆµéÀº ¾Æ¹öÁöÀÇ »ý¼ºÀÚ¿¡°Ô ¸Å°³º¯¼ö¸¦ ³Ö¾îÁÙ Àǹ«°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù. À̰ÍÀ» ¹«½ÃÇÑ´Ù¸é ¾ÆµéÀº ¸¸µé¾îÁú ¼ö ¾ø½À´Ï´Ù.

 

&

BaseSon.cs

Ü »óÀ§Å¬·¡½ºÀÇ »ý¼ºÀÚ¸¦ È£ÃâÇÏ´Â base()

using System;

public class BaseFather {

     private string name;

     public BaseFather(string name) {

           this.name = name;        

           Console.WriteLine("BaseSon : {0}", name);

     }

}

public class BaseSon : BaseFather {

     public BaseSon(string str) : base(str) {

                          

     }

       public static void Main() {

           BaseSon s = new BaseSon("Base Test Problem");

     }

}

C:\C#Example\04>csc BaseSon.cs

C:\C#Example\04>BaseSon

BaseSon : Base Test Problem

 

¾Æ¹öÁöŬ·¡½ºÀÇ »ý¼ºÀÚ°¡ ¸Å°³º¯¼ö¸¦ °¡Áö°í ÀÖ´Ù¸é ¾Æµé ÀÔÀå¿¡¼­´Â ¾Æ¹öÁöÀÇ »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö¸¦ ³Ö¾îÁÖ¾î¾ß ÇÒ Àǹ«°¡ ÀÖ½À´Ï´Ù. ÀÌ ¶§ baseŰ¿öµå¸¦ »ç¿ëÇÕ´Ï´Ù. À̰ÍÀº ¾ÆµéÀÌ ¾Æ¹öÁö¸¦ »ó¼Ó ¹Þ¾Ò±â ¶§¹®À̸ç ÀÚµ¿À¸·Î ¾ÆµéÀÌ »ý¼ºµÉ ¶§ ¾Æ¹öÁöÀÇ »ý¼ºÀÚ¸¦ È£ÃâÇϱ⠶§¹®ÀÔ´Ï´Ù.

 

1 base()

n                 µðÀÚÀΟÀÓ¿¡ ¾Æ¹öÁö¸¦ ÂüÁ¶ÇÏ´Â À¯ÀÏÇÑ ÂüÁ¶º¯¼öÀÌ´Ù

n                 ¹«½Ã´çÇÑ ¾Æ¹öÁöŬ·¡½ºÀÇ ¸Þ¼­µå¸¦ »ç¿ëÇÏ°í ½ÍÀ» ¶§ »ç¿ëÇÑ´Ù.

n                 ¾Æ¹öÁö »ý¼ºÀÚ¿¡ ¸Å°³º¯¼ö°¡ Á¸ÀçÇÑ´Ù¸é »ý¼ºÀÚÀÇ ¸Å°³º¯¼öÀÇ Çü°ú °³¼ö¸¦ ¸ÂÃß¾î ÁÖ¾î¾ß¸¸ È£Ãâ °¡´ÉÇÏ´Ù

n                 ¾Æ¹öÁö »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö ŸÀÔÀÌ ´Þ¶ó È£ÃâÇØ ÁÙ ¼ö ¾øÀ» ¶§ »ç¿ëÇÑ´Ù.

n                 »ý¼ºÀÚ ³»¿¡¼­ ¾Æ¹öÁö »ý¼ºÀÚ¸¦ È£ÃâÇϱâ À§ÇØ »ç¿ëÇÑ´Ù

 

¢Ã base Ű¿öµåÀÇ Á¤¸®

q                ÆÄ»ý Ŭ·¡½º »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö°¡ ÀÖ°í ±âº» Ŭ·¡½º »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö°¡ ¾øÀ» ¶§

n                   base ¾øÀÌ »ç¿ë°¡´É

q                ÆÄ»ý Ŭ·¡½º »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö°¡ ¾ø°í ±âº» Ŭ·¡½º »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö°¡ ÀÖÀ» ¶§

n                   base ½áµµ »ç¿ëºÒ°¡

q                ÆÄ»ý Ŭ·¡½º »ý¼ºÀÚ ¸Å°³º¯¼ö°¡ ÀÖ°í ±âº» Ŭ·¡½º »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö°¡ ÀÖÀ» ¶§

n                   base ½á¾ß °¡´É

q                ±âº» Ŭ·¡½º¿Í ÆÄ»ý Ŭ·¡½º »ý¼ºÀÚ µÑ ´Ù ¸Å°³º¯¼ö°¡ ¾øÀ» ¶§

n                   base ¾ø¾îµµ °¡´É



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