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

 

 

4.10 internal°ú protected internalÁ¢±ÙÀÚ

 

ÀÌÁ¦±îÁö´Â Ŭ·¡½º ¸â¹öÀÇ Á¢±Ù ±ÇÇÑÀ» Á¦¾îÇϱâ À§Çؼ­ public, protected, private ÀÌ·¸°Ô ¼¼ Ű¿öµå¸¸ »ç¿ëÇß½À´Ï´Ù. ±×·¯³ª Á¢±Ù ±ÇÇÑÀ» Á¦¾îÇϴ Ű¿öµå¿¡´Â internalÀ̶ó°í ÇÏ´Â ¶Ç ÇϳªÀÇ Å°¿öµå°¡ ÀÖ½À´Ï´Ù. internal Á¢±Ù ±ÇÇÑÀ» °¡Áø ¸â¹ö´Â ¾î¼Àºí¸® Äڵ忡¼­¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. internalŰ¿öµå´Â µ¿ÀÏ ¾î¼Àºí¸® ¾ÈÀ̶ó¸é ÇØ´ç Ŭ·¡½º ¸â¹ö´Â publicÀ¸·Î Àû¿ëµÇ°í ¾î¼Àºí¸® ¿ÜºÎ¶ó¸é privateÀ¸·Î Ŭ·¡½º ¸â¹ö¿¡ Á¢±ÙÇÒ ¼ö ¾ø½À´Ï´Ù.

 

³í¸®Àû Á¢±Ù Á¦ÇÑÀÚ

¹°¸®Àû Á¢±Ù Á¦ÇÑÀÚ

±âÁØ : Ŭ·¡½º °èÃþ±¸Á¶¿¡¼­ Á¢±ÙÀ» Á¦ÇÑ

±âÁØ : ¾î¼Àºí¸® ´ÜÀ§·Î Á¢±ÙÀ» Á¦ÇÑ

public, private, protetcted

Internal

 

¢Ã Internal Á¢±ÙÀÚ

q                private°ú publicÀÇ Áß°£ ÇüÅ·ΠÇϳªÀÇ Assembly ´ÜÀ§ ³»¿¡¼­¸¸ Á¢±ÙÀ» Çã¶ôÇÏ´Â Á¢±ÙÀÚ

 

internal Á¢±ÙÀÚ

internal Ű¿öµå´Â ´Ù¸¥ Á¢±Ù Á¦ÇÑÀÚ¿Í ¸¶Âù°¡Áö·Î Ŭ·¡½º¸í, Çʵå, ¸Þ¼­µå¸í, ÁßøµÈ Ŭ·¡½º¸í µî¿¡¼­ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.

 

1 internal

n                 Ŭ·¡½º AÀÇ internal ¸â¹ö´Â Ŭ·¡½º AÀÇ ¾î¼Àºí¸® ¾È¿¡ Àִ Ŭ·¡½ºÀÇ ¸Þ¼­µå¿¡¼­ Á¢±Ù °¡´É

 

 ´ÙÀ½Àº °°Àº ¾î¼Àºí¸® Áï °°Àº ÇÁ·Î±×·¥ ³»¿¡¼­ internalÀÇ »ç¿ëÀ» º¸¿©ÁÖ´Â ¿¹Á¦ ÀÔ´Ï´Ù.

 

&

InternalTest.cs

Ü internal Ű¿öµå »ç¿ë ¿¹

using System;

 

class OuterClass{

          internal static void PrintHello(){

                 Console.WriteLine("Hello, This is internal class.");

          }

}

class InternalTest{

              public static void Main(){

                 OuterClass.PrintHello();

           }

}

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

C:\C#Example\04>InternalTest

Hello, This is internal class.

 

º¸´Ù½ÃÇÇ ÇϳªÀÇ ¾î¼Àºí¸® ³»¿¡¼­ÀÇ internal ¼±¾ðÀº public°ú °°ÀÌ ¾²ÀÔ´Ï´Ù.

 

À§ ¿¹Á¦¸¦ µÑ·Î ³ª´©¾î ¿ÜºÎ¿¡¼­ internal ¸Þ¼­µå¿¡ Á¢±ÙÇØ º¸°Ú½À´Ï´Ù. ¸ÕÀú Internal ¸Þ¼­µå¸¦ °¡Áø Ŭ·¡½º¸¦ ¶óÀ̺귯¸®·Î ¸¸µé¾î µÓ´Ï´Ù.

 

&

Internal01.cs

Ü internal Ű¿öµå »ç¿ë¿¹

using System;

 

public class OuterClass{

       internal static void PrintHello(){

              Console.WriteLine("Hello, This is internal class.");

       }

}

C:\C#Example>csc /t:library Internal01.cs

C:\C#Example>dir *.dll

2002-09-05  04:02p               3,072 Internal01.dll

 

°£´ÜÇÑ PrintHello() ¸Þ¼­µå¸¦ °¡Áö´Â OuterClass´Â internal·Î ¼±¾ðµÇ¾î ÀÖ½À´Ï´Ù. dll·ÎÀÇ ÄÄÆÄÀÏÀº Äֿܼ¡¼­ /t(target) ¿É¼ÇÀ» ÁÖ¾î ¡°csc /t:library Internal01.cs¡±·Î ÄÄÆÄÀÏÇÕ´Ï´Ù. ¿ÜºÎ¿¡¼­ Á¢±ÙÀÌ °¡´ÉÇϵµ·Ï public Ŭ·¡½º·Î ¸¸µé¾ú½À´Ï´Ù.

 

À̾ Ŭ·¡½º¸¦ Çϳª ´õ ¸¸µé¾î ¿ÜºÎ¿¡¼­ Á¢±ÙÇØ º¸°Ú½À´Ï´Ù.

 

&

Internal02.cs

Ü internal Ű¿öµå »ç¿ë¿¹

using System;

 

class Interna02{

            public static void Main(){

             OuterClass.PrintHello();

         }

}

C:\C#Example\04>csc /t:exe /r:Internal01.dll Internal02.cs

 

Internal02.cs(5,3): error CS0122: º¸È£ ¼öÁØ ¶§¹®¿¡ 'OuterClass.PrintHello()'¿¡

        ¾×¼¼½ºÇÒ ¼ö ¾ø½À´Ï´Ù.

 

°á°ú¿¡¼­ º¸ÀÌ´Â ¿¡·¯¿Í °°ÀÌ ¿ÜºÎÀÇ Å¬·¡½º¿¡¼­´Â Internal·Î ¼±¾ðµÈ ¸Þ¼­µå¿¡´Â Á¢±ÙÇÒ ¼ö°¡ ¾ø½À´Ï´Ù.

 

protected internal Á¢±ÙÀÚ

protected internal·Î ¼±¾ðµÈ ¸â¹ö´Â À̸§¿¡¼­ ¾Ë ¼ö ÀÖµíÀÌ (internal + protected)°°Àº ¾î¼Àºí¸® ¾È¿¡ Àִ Ŭ·¡½º(internal)¿Í ÆÄ»ýµÈ Ŭ·¡½º(protected)ÀÇ Á¢±ÙÀ» Çã¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.

 

1 protected internal

n                 Ŭ·¡½º AÀÇ protected internal ¸â¹ö´Â 

n                 Ŭ·¡½º AÀÇ ¸Þ¼­µå

n                 Ŭ·¡½º A·ÎºÎÅÍ »ó¼ÓµÈ Ŭ·¡½ºÀÇ ¸Þ¼­µå

n                 Ŭ·¡½º AÀÇ ¾î¼Àºí¸® ¾È¿¡ ÀÖ´Â ¸Þ¼­µå¿¡¼­ Á¢±Ù °¡´É

n                 Áï ¡®protected ¶Ç´Â internal¡¯ µÑÁ߸¸ Çϳª¸¸ Àû¿ëµÇ¸é µÊ

 

À̹ø¿¡´Â protected internal·Î ¼±¾ðµÈ ¸Þ¼­µå¸¦ °¡Áö´Â Ŭ·¡½º¸¦ »ó¼ÓÇϰí, DLLÆÄÀÏÀ» ÂüÁ¶ÇÏ´Â ÇüÅ·ΠÇÏ¿© protected internal Ű¿öµåÀÇ »ç¿ëÀ» ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

&

Internal03.cs

Ü protected internal Ű¿öµå »ç¿ë ¿¹

using System;

class OuterClass{

       protected internal static void PrintHello(){

            Console.WriteLine("Hello, This is internal class.");

       }

}

C:\C#Example>csc /t:library Internal03.cs

 

 

¾ÕÀÇ ¿¹Á¦¿Í °°Áö¸¸ ¿©±â¼­´Â protected internal·Î PrintHello() ¸Þ¼­µå¸¦ ÁöÁ¤ÇØÁÖ¾ú½À´Ï´Ù.

 

´ÙÀ½Àº ¿ª½Ã ¾î¼Àºí¸® ¿ÜºÎ Ŭ·¡½º¸¦ ÂüÁ¶ÇÏ´Â Internal04.cs ÆÄÀÏÀÔ´Ï´Ù.  ¿©±â¿¡¼­´Â ÄÚµåÀÇ ÄÄÆÄÀÏÀº internal03.dllÆÄÀÏÀ» ÂüÁ¶ÇØ¾ß ÇϹǷΠ¡°csc /t:exe /r:Internal03.dll Internal04.cs¡±¿Í °°Àº ¸í·ÉÀ» »ç¿ëÇØ¼­ ÄÄÆÄÀÏ ÇÕ´Ï´Ù.

 

&

Internal04.cs

Ü internal Ű¿öµå »ç¿ë¿¹

using System;

 class Program{

          public static void Main(){

            OuterClass.PrintHello();

      }

}

C:\C#Example\04>csc /t:exe /r:Internal03.dll Internal04.cs

C:\C#Example\04>Internal04

Hello, This is internal class.

 

º¸´Ù½ÃÇÇ °á°ú°¡ ÀÌ»ó ¾øÀÌ Àß Ãâ·ÂµÇ¾ú½À´Ï´Ù. ÀÌ·¸°Ô protected internal Ű¿öµå´Â protected¿Í internal ÀÇ ¼ºÁúÀ» µÑ ´Ù(or) °¡Áö°í ÀÖ½À´Ï´Ù.

 

¿©·¯ºÐÀÌ Á÷Á¢ ÇÁ·Î±×·¡¹Ö ÇϽǶ§, ¿ÜºÎ¿¡ ³ëÃâµÇ¾î¼­´Â ¾È µÇ´Â Ŭ·¡½ºÀÇ ¸Þ¼­µå, »ó¼Ó°ü°è, ¾î¼Àºí¸® °ü°è¸¦ »ý°¢Çϼż­ Á¢±ÙÀÚ¸¦ Ȱ¿ëÇϽñ⠹ٶø´Ï´Ù.



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