¼Ò¼³°°ÀºC#  Á¦4°­ÀÇ C#ÀÇ °´Ã¼ÁöÇâ  09. protected Á¢±ÙÀÚ  

 

 

4.9 protected Á¢±ÙÀÚ

 

Á¢±ÙÁ¦¾î´Â ½ÇÇàŸÀÓ°ú µðÀÚÀΟÀÓ µÎ ºÐ·ù·Î ³ª´¹´Ï´Ù. 2ÀåÀÇ Á¢±ÙÁ¦¾î ºÎºÐ¿¡¼­ °´Ã¼ÀÇ ¸Þ¸ð¸®¸¦ »ý¼ºÇÑ ÈÄÀÇ Á¢±ÙÁ¦¾îÇÏ´Â ½ÇÇàŸÀÓ Á¢±ÙÁ¦¾î¸¸ ¹è¿ü½À´Ï´Ù. Áö±ÝÀÌ ¹Ù·Î Ŭ·¡½º¸¦ µðÀÚÀÎÇϴ ŸÀÓÀÇ Á¢±ÙÁ¦¾î¸¦ ³íÇÒ ¶§ÀÎ °Í °°½À´Ï´Ù. Áï, »ó¼Ó°ü°è¿¡¼­´Â µðÀÚÀΟÀÓÀÇ Á¢±ÙÁ¦¾î°¡ ÀÌ¿ëµÈ´Ù´Â °ÍÀÔ´Ï´Ù. ÀÚ! ±×·¸´Ù¸é Á¤È®ÇÏ°Ô »ó¼Ó¿¡¼­ÀÇ Á¢±ÙÁ¦¾î ¹®Á¦´Â ¾î¶² °ÍÀÎÁö ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

¢Ñ  µðÀÚÀΟÀÓÀÇ Á¢±Ù¹®Á¦

»ó¼Ó ¹Þ¾Æ¼­ ÄÚµùÇϰí ÀÖ´Â ¼ø°£, »ó¼ÓÀ» ¹Þ¾Æ¼­ ÇϳªÀÇ »õ·Î¿î Ŭ·¡½º¸¦ Á¦ÀÛÇϰí ÀÖ´Â ¼ø°£, ÇÏÀ§Å¬·¡½º ÀÔÀå¿¡¼­ »óÀ§Å¬·¡½ºÀÇ Á¢±Ù ¹®Á¦¸¦ ´Ù·é´Ù.

 

»óÀ§Å¬·¡½º¸¦ ¾Æ¹öÁö¶ó ºÎ¸£°í ÇÏÀ§Å¬·¡½º¸¦ ¾ÆµéÀ̶ó ºÎ¸£°Ú½À´Ï´Ù. ¾ÆµéÀº ´ç¿¬È÷ ¾Æ¹öÁö¸¦ »ó¼ÓÇϰí ÀÖ´Â »óÅÂÀÔ´Ï´Ù. »ó¼ÓÀ» ÇÑ´Ù¸é ¾Æ¹öÁöÀÇ private ¸â¹öÇʵå¿Í ¸â¹ö¸Þ¼­µå¸¦ ¾ÆµéÀÌ ¹°·Á ¹Þ½À´Ï´Ù. ÀÌ ¶§ ¾ÆµéÀº ¾Æ¹öÁöÀÇ private ¸â¹ö¸¦ ÀÚ½ÅÀÇ ¸â¹öó·³ ¸¶À½´ë·Î Á¢±ÙÇÒ ¼ö ÀÖÀ»±î¿ä? (ÈùÆ®´Â publicÀ̶ó¸é ¿ÏÀüÈ÷ ÀÚ½ÅÀÇ °Í°ú ¶È°°ÀÌ ´Ù·ê ¼ö ÀÖ½À´Ï´Ù.)

 

¢Ã »ó¼Ó °ü°è¿¡¼­ private

q                »óÀ§Å¬·¡½º¸¦ »ó¼Ó ¹ÞÀº ÇÏÀ§Å¬·¡½º ³»¿¡¼­ »óÀ§Å¬·¡½ºÀÇ private ¸â¹öÇʵ忡 Á÷Á¢ Á¢±ÙÇÒ ¼ö ¾ø´Ù.

q                ¾î¶°ÇÑ °æ¿ì¶óµµ privateÀ̸é public ¸Þ¼­µå¸¦ ÅëÇØ¼­¸¸ Á¢±Ù °¡´ÉÇÏ´Ù.

 

ÀÌ Áú¹®¿¡ ´ëÇÑ ÇØ´äÀº Çѹø privateÀº ¿µ¿øÇÑ privateÀ̶ó´Â °ÍÀÔ´Ï´Ù. Áï No¶ó´Â ¶æÀÔ´Ï´Ù. ¾ÆµéÀÌ ¾Æ¹öÁö·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ¾Ò´Ù¸é ¾Æ¹öÁö °Íµµ ³» °Í, ³» °Íµµ ³» °ÍÀ̶ó´Â ¸íÁ¦°¡ Åë¿ëµË´Ï´Ù. ÇÏÁö¸¸ ¾Æ¹öÁöÀÇ ¸¶Áö¸· ³²Àº ÀÚÁ¸½É(í»ðîãý)ÀÎ private ¸â¹ö¸¸Å­Àº Á÷Á¢Á¢±ÙÀ» ºÒÇã(ÝÕúÉ)ÇÕ´Ï´Ù.

 

&

Son.cs

Ü »ó¼ÓÀÇ Á¢±ÙÁ¦¾î¸¦ Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦

using System;

public class MyFather {

       public String name;

       private String nickname;

       public MyFather(){

                   name ="À§´ëÇÑ ¾Æ¹öÁö";

                   nickname="»±ÄÚ";

       }

       public String GetNickName(){

              return nickname;

       }

}

public class Son: MyFather {

       public void SayFatherNames() {

              Console.WriteLine(name);

                   Console.WriteLine(nickname);//»óÀ§Å¬·¡½ºÀÇ private¿¡ Á÷Á¢Á¢±Ù ºÒÇã

       }

       public static void Main() {

              Son s = new Son();

              s.SayFatherNames();

       }

}

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

Son.cs(16,21): error CS0122: º¸È£ ¼öÁØ ¶§¹®¿¡ 'MyFather.nickname'¿¡ ¾×¼¼½ºÇÒ ¼ö ¾ø½À´Ï´Ù.

 

ÀÌ ¿¹Á¦´Â ¿¡·¯°¡ ¹ß»ýÇÕ´Ï´Ù. ¾Æ¹öÁöÀÇ private ¸â¹öÇʵ带 ¸¶À½´ë·Î »ç¿ëÇÏ·Á´Ù ÄÄÆÄÀϵµ ÇÏÁö ¸øÇϰí ÀÖ½À´Ï´Ù. ¾Æ¹öÁöÀÇ nickname ¸â¹öÇʵå´Â privateÀε¥ À̸¦ ¾ÆµéÀÌ ¸¶À½´ë·Î Á¢±ÙÇÏ´Â °ÍÀº ¿À·ùÀÔ´Ï´Ù. ÄÄÆÄÀÏ ¿¡·¯ÀÔ´Ï´Ù. ÇÏÁö¸¸ nameÀ̶ó´Â pubic ¸â¹öÇʵå´Â ¸¶À½´ë·Î Á¢±ÙÇϰí ÀÖ½À´Ï´Ù. ¾ÆµéÀÇ Å¬·¡½º¸¦ µðÀÚÀÎÇÒ ¶§, ¸¶Ä¡ ÀÚ½ÅÀÇ ¸â¹öÇʵåó·³ ÀÌ¿ëÇϰí ÀÖ½À´Ï´Ù. ÇöÀç ¼³¸íÇϰí ÀÖ´Â °ÍÀº »ó¼ÓÀÇ °ü°è¿¡¼­ ³ªÅ¸³ª´Â µðÀÚÀΟÀÓÀÇ Á¢±ÙÁ¦¾îÀÔ´Ï´Ù. Çѹø privateÀº ¿µ¿øÇÑ privateÀÔ´Ï´Ù. privateÀÇ Á¢±ÙÁ¦¾î´Â staticÁ¢±Ù, »ó¼Ó°ü°è, ½ÇÇàŸÀÓÀÇ Á¢±ÙÁ¦¾î ¸ðµç °÷¿¡ ±× ±ÔÄ¢À» Áöŵ´Ï´Ù. Áï, privateÀº ¿¹¿Ü°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.

 

±×·¸´Ù¸é ¾Æ¹öÁöÀÇ private¿¡ ¾î¶»°Ô Á¢±ÙÇÒ ¼ö ÀÖÀ»±î¿ä? ³Ê¹«³ªµµ ¸ÍÇÑ Áú¹®ÀÔ´Ï´Ù. private ¸â¹öÇʵå´Â public ¸Þ¼­µå¸¦ ÅëÇØ¼­ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÌ»ó À̰ÍÀº ³íÇÏÁö ¾Ê¾Æµµ »·ÇÑ À̾߱âÀÔ´Ï´Ù. ÀÚ! ±×·¸´Ù¸é ÀÌ·± Áú¹®À» ´Ù½Ã ´øÁ®º¸ÁÒ. »ó¼Ó°ü°è¿¡¼­ public ¸Þ¼­µå¸¦ »ç¿ëÇÏÁö ¾Ê°í ¾Æ¹öÁöÀÇ ¸â¹öÇʵå´Â ½ÇÇà ŸÀÓ¿¡´Â privateÀ̸鼭 ¾Æµé¿¡°Ô´Â ¿ÏÀüÇÑ publicÀ̰íÀÚ ÇÕ´Ï´Ù. À̰ÍÀÌ ºÎ¸ðÀÇ ¸¶À½ ¾Æ´Ï°Ú½À´Ï±î? ÀÌ·¯ÇÑ ¹æ¹ýÀÌ C#¿¡ Á¸ÀçÇÒ±î¿ä?

 

¢Ã »ó¼Ó °ü°è¿¡¼­ protected

q                ¾Æ¹öÁöÀÇ protected ¸â¹öÇʵå´Â ½ÇÇà ŸÀÓ¿¡´Â privateÀ̸鼭 ¾Æµé¿¡°Ô´Â ¿ÏÀüÇÑ publicµÈ´Ù.

 

´äÀº YesÀÔ´Ï´Ù. À§ÀÇ Áú¹®Àº °´Ã¼ÀÇ ¸Þ¸ð¸®¸¦ »ý¼ºÇÑ ÈÄ Á¡(.)Âï°í Á¢±ÙÇÒ ¶§´Â ¿Ïº®ÇÑ privateÀ̸鼭 »ó¼Ó°ü°èÀÇ Å¬·¡½º µðÀÚÀΟÀÓ¿¡´Â ¿Ïº®ÇÑ publicÀ̰íÀÚ ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ·± ¹æ¹ý·ÐÀ» Á¦°øÇϱâ À§Çؼ­ ¾ÆÁ÷ ¼³¸íÇÏÁö ¾ÊÀº protected Á¢±ÙÁöÁ¤ÀÚ°¡ Á¸ÀçÇÕ´Ï´Ù.

 

À§ÀÇ ¿¹Á¦¿¡¼­ privateÀ» protected·Î °íÄ£´Ù¸é ÀÌ ¿¹Á¦´Â ¾ÆÁÖ ¸ÚÁö°Ô µ¿ÀÛ ÇÒ °ÍÀÔ´Ï´Ù. ¿©±â¼­ ±â¾ïÇØ¾ß ÇÏ´Â °ÍÀº protected Á¢±ÙÁöÁ¤ÀÚ´Â »ó¼ÓÀÇ °ü°è¿¡¼­ ³ª¿É´Ï´Ù. protected´Â private°ú ¶È°°ÀÌ, ¿ÜºÎ¿¡¼­´Â Á¢±Ù ºÒ°¡´ÉÇÕ´Ï´Ù. ±×¸®°í privateÀº »ó¼ÓÀ» ÇßÀ» ¶§ ÇÏÀ§Å¬·¡½º¿¡¼­µµ Á÷Á¢Á¢±Ù ºÒ°¡´ÉÇØÁý´Ï´Ù. ȤÀÚ´Â ´ÙÀ½°ú °°Àº Àǹ®À» °¡Áú ¼öµµ ÀÖÀ» °ÍÀÔ´Ï´Ù. »ó¼ÓÀ» ¹Þ¾Ò´Ù¸é »óÀ§Å¬·¡½ºÀÇ ¸ðµç ¸â¹ö´Â ÇÏÀ§Å¬·¡½ºÀÇ ¸â¹ö°¡ µÇ´Â °ÍÀÌ ¾Æ´Ñ°¡? ¶ó´Â Àǹ®À» Á¦±âÇÒ °ÍÀÔ´Ï´Ù.

 

±×¸² 4-5 »ó¼Ó°ü°è¿¡¼­ÀÇ Á¢±Ù Á¦ÇÑÀÚ protected

 

»ó¼ÓÀ» ¹Þ¾Ò´Ù¸é ´ç¿¬È÷ »óÀ§Å¬·¡½ºÀÇ ¸â¹ö´Â ÇÏÀ§Å¬·¡½ºÀÇ ¸â¹öó·³ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.  ÇÏÁö¸¸ private ¼Ó¼ºÀº Á÷Á¢Á¢±ÙÀÌ ºÒ°¡´ÉÇÕ´Ï´Ù. Áï, Çѹø privateÀº ¿µ¿øÇÑ privateÀ̶ó´Â ¸»±îÁö ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¡¼­ »ó¼ÓÀ» ÇßÀ» ¶§ ÇÏÀ§Å¬·¡½º¿¡¼­ ÀÚ½ÅÀÇ ¸â¹öó·³ »ç¿ëÇϱâ À§Çؼ­, ¶Ç ´Ù¸¥ ¹æ¹ýÀ» Á¦½ÃÇϰí ÀÖ½À´Ï´Ù. ¸ðµç ¸é¿¡¼­ privateÀ» ¼öÇàÇϸ鼭 »ó¼ÓÀÇ °ü°è¿¡¼­¸¸ publicÀÇ ÇàÀ§¸¦ ÇÏ´Â °ÍÀÌ ¹Ù·Î protectedÀÔ´Ï´Ù. À̰ÍÀ» ´Ù¸£°Ô Ç¥ÇöÇÑ´Ù¸é ¾Æ¹öÁöÀÇ ¸ðµç °ÍÀº »ó¼ÓÀ» ¹Þ¾Æ Á÷Á¢ »ç¿ëÇÒ ¼ö ÀÖÁö¸¸, ¾Æ¹öÁöÀÇ private¸¸Àº Á÷Á¢ Á¢±ÙÇÒ ¼ö ¾ø½À´Ï´Ù. ÇÏÁö¸¸ ¾Æ¹öÁöÀÇ protected´Â ¾ÆµéÀÇ ¸â¹öó·³ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¾Æ¹öÁöÀÇ ¸ðµç °ÍÀÌ ¾ÆµéÀÇ °ÍÀÌ µÈ´Ù°í ÇØµµ °ú¾ðÀÌ ¾Æ´Õ´Ï´Ù. Áï ¾Æ¹öÁö °Íµµ ³» °Í, ³» °Íµµ ³» °ÍÀ̶ó´Â ¸»À» »ç¿ëÇÒ ¼ö ÀÖ°Ô µÇ´Â °ÍÀÔ´Ï´Ù.

 

¸â¹öÇʵ常À» À̾߱âÇߴµ¥ ¸â¹ö¸Þ¼­µå´Â ¾î¶»°Ô µÇ´À³Ä°í ¹¯´Â´Ù¸é ¶È°°´Ù°í À̾߱â ÇÒ ¼ö ¹Û¿¡ ¾ø½À´Ï´Ù. ¸Þ¼­µå³ª º¯¼ö³ª ¶È°°Àº ³ðµéÀ̴ϱî¿ä. °´Ã¼ÁöÇâ¿¡¼­µµ ºÎ¸ð Àڽİü°èÀÇ ÀηûÀÌ ¿ÏÀüÇÏ°Ô ÁöÄÑÁö°í ÀÖ´Â °ÍÀÌ ½Å±âÇÏÁö ¾Ê½À´Ï±î?



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