ÀÌÁ¦±îÁö´Â Ŭ·¡½º ¸â¹öÀÇ Á¢±Ù ±ÇÇÑÀ» Á¦¾îÇϱâ À§Çؼ 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 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 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 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°ÀÇ ÀúÀÚ:ÃÖ¿µ°ü |