ÀÎÅÍÆäÀ̽º´Â º¸Åë ¡®Áߺ¹»ó¼ÓÀ» º¯Ä¢ÀûÀ¸·Î Áö¿øÇÑ´Ù¡¯¶ó°í µÇ¾î ÀÖ½À´Ï´Ù. º¸Åë Áߺ¹»ó¼ÓÀ̶ó°í ±×³É ¹Ð¾î ºÙ¿© ¹ö¸®¸é ÀÌÇØ°¡ ÈûµéÁö ¾Ê°Ú½À´Ï±î? Áߺ¹»ó¼ÓÀ̶õ ¸» ±×´ë·Î 2°³ ÀÌ»óÀÇ Å¬·¡½º¸¦ µ¿½Ã¿¡ »ó¼Ó ¹Þ´Â °ÍÀ» ¸»ÇÕ´Ï´Ù. ÇÏÁö¸¸ C#¿¡¼ Áߺ¹»ó¼ÓÀ» Áö¿øÇÏÁö ¾Ê´Â ÀÌÀ¯´Â ¹«¾ùÀϱî¿ä? ±× ÀÌÀ¯¸¦ ±×¸²À¸·Î Çѹø ±×·Á º¸°Ú½À´Ï´Ù.

±×¸² 5-3 Áߺ¹»ó¼ÓÀÇ ¹®Á¦
Áߺ¹»ó¼ÓÀ» »ç¿ëÇßÀ» ¶§ ¹®Á¦Á¡À» Á¤È®ÇÏ°Ô º¸¿©ÁÖ°í ÀÖ´Â ±×¸²ÀÔ´Ï´Ù. ¾ÆµéA¿Í ¾ÆµéB µÑ ´Ù ¾Æ¹öÁöF·ÎºÎÅÍ »ó¼Ó ¹Þ°í ³ ÈÄ, ´Ù½Ã ¾ÆµéA¿Í ¾ÆµéB¸¦ Áߺ¹»ó¼Ó ÇßÀ» ¶§ ¹ß»ýÇÏ´Â ¹®Á¦Á¡Àº ¾Æ¹öÁöF°¡ µÑ »ý±ä´Ù´Â °ÍÀÔ´Ï´Ù. ¾Æ¹öÁöF¸¦ µÑ ´Ù »ó¼Ó ¹Þ±â ¶§¹®¿¡ ¼ÕÀÚÀÔÀå¿¡¼´Â ¾Æ¹öÁöF°¡ µÑÀÌ µÇ´Â °ÍÀÌÁÒ. ÀÌ·¸°Ô µÇ¸é ¼ÕÀÚ°¡ ¾Æ¹öÁöF¸¦ »ç¿ëÇÒ ¶§ ¾ÆµéAÀÇ ¾Æ¹öÁöFÀÎÁö ¾ÆµéB¿¡ ¾Æ¹öÁö FÀÎÁö ¸ðÈ£ÇÔÀÌ ¹ß»ýÇÕ´Ï´Ù. C++¿¡¼´Â ¿µ¿ª ÁöÁ¤ÀÚ¸¦ ÀÌ¿ëÇØ¼ À̰ÍÀ» ÇØ°áÇϰí ÀÖ°í, C#¿¡¼´Â ´ÜÀÏ»ó¼Ó¸¸À» Áö¿øÇϸç ÀÎÅÍÆäÀ̽ºÀÇ Áߺ¹»ó¼Ó¸¸À» Çã¿ëÇϰí ÀÖ½À´Ï´Ù. »ó¼Ó°ü°è°¡ ´õ º¹ÀâÇØÁö°í »ó¼ÓÀ» °ÅµìÇÏ°Ô µÇ¸é¼ ¿ÀÈ÷·Á ´õ Å« ¹®Á¦Á¡À» ¹ß»ý½ÃŰ°Ô µÇÀÚ C#¿¡¼´Â ¾Æ¿¹ Ŭ·¡½ºÀÇ Áߺ¹»ó¼ÓÀ» ±ÝÁöÇϰí ÀÖ½À´Ï´Ù. C#Àº ±âº»ÀûÀ¸·Î ´ÜÀÏ Å¬·¡½ºÀÇ »ó¼Ó¸¸ÀÌ °¡´ÉÇÕ´Ï´Ù.
ÇÏÁö¸¸ ¾Æ¹öÁö°¡ ´Ù¸¦ ¶§ »ç¿ëÇÑ´Ù¸é ¾î´À Á¤µµ È¿À²¼ºÀÌ ÀÖ½À´Ï´Ù. ÇѲ¨¹ø¿¡ µÎ °¡Áö ±â´ÉÀ» ¸ðµÎ »ó¼ÓÇÏ´Â °ÍÀº ¾ÆÁÖ ¸·°ÇÑ ÈûÀÔ´Ï´Ù. À̰ÍÀ» ¾î´À Á¤µµ Ȱ¿ëÇϰí ÀÖ´Â °ÍÀÌ ¹Ù·Î ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù.
´ÙÀ½ ¿¹Á¦´Â ÀÎÅÍÆäÀ̽º°¡ ´Ù¸¥ ÀÎÅÍÆäÀ̽º·ÎºÎÅÍ »ó¼Ó ¹Þ´Â °ÍÀ» º¸¿©ÁÖ°í, µÎ °³ÀÇ ÀÎÅÍÆäÀ̽º¸¦ ÇϳªÀÇ Å¬·¡½º°¡ »ó¼ÓÇØ ±¸ÇöÇÏ´Â °ÍÀ» º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù.
|
& |
MultiInheritanceMain.cs |
Ü Áߺ¹»ó¼ÓÀ» Áö¿øÇÏ´Â ÀÎÅÍÆäÀ̽ºÀÇ ±¸Çö |
|
using System; interface InterA { void a(); } interface InterB { void b(); } interface InterC : InterA { void c(); } class MultiInheritance : Object, InterB, InterC { public void a() { Console.WriteLine( "InterA_a()" ); } public void b() { Console.WriteLine( "InterB_b()" ); } public void c() { Console.WriteLine( "InterC_c()" ); } } public class MultiInheritanceMain{ public static void MultiInheritance mi = new MultiInheritance(); InterA interface1 = mi; interface1.a(); InterB interface2 = mi; interface2.b(); InterC interface3 = mi; interface3.a(); interface3.c(); }//class }//main | ||
|
C:\C#Example\05>csc MultiInheritanceMain.cs C:\C#Example\05>MultiInheritanceMain InterA_a() InterB_b() InterA_a() InterC_c() | ||
¾Õ¿¡¼ ³ª¿Â ¿¹Á¦¿¡ Object Ŭ·¡½º¿Í ÀÎÅÍÆäÀ̽º¸¦ µ¿½Ã¿¡ »ó¼ÓÇϰí ÀÖ½À´Ï´Ù. À̰ÍÀº ¸ðµç Ŭ·¡½º°¡ Object Ŭ·¡½º·ÎºÎÅÍ »ó¼Ó ¹Þ´Â´Ù´Â Áõ°ÅÀÔ´Ï´Ù. ±×·¯°í º¸¸é ÀÎÅÍÆäÀ̽º¿Í Ãß»óŬ·¡½º, Ŭ·¡½º ¸ðµÎ »çÃ̰£À̶ó°í ¸»ÇÒ ¼ö ÀÖ½À´Ï´Ù. Ãß»óŬ·¡½º´Â ´ç¿¬È÷ Ŭ·¡½º¶ó°í ÇßÀ¸´Ï Ŭ·¡½ºÀ̰í¿ä, ÀÎÅÍÆäÀ̽º´Â Ãß»óŬ·¡½ºÀÌÁö¸¸ º¸´Ù ƯÀÌÇÏ°Ô ¸ðµç ¸â¹öÀÇ ¸öü°¡ ¾ø´Â Ãà¾àµÈ ÇüÅÂÀÇ Å¬·¡½ºÀÔ´Ï´Ù. ±×·¸´Ù¸é MultiInheritanse Ŭ·¡½ºÀÇ °æ¿ì¿¡´Â InterA, InterB, InterC 3°³ÀÇ ÀÎÅÍÆäÀ̽º¿Í Object Ŭ·¡½º µî ¸ðµÎ 4°³¸¦ »ó¼Ó ¹Þ°í ÀÖ½À´Ï´Ù.

±×¸² 5-4 ÀÎÅÍÆäÀ̽ºÀÇ Áߺ¹»ó¼Ó
±×¸²¿¡¼¿Í °°ÀÌ MultiInheritance Ŭ·¡½º´Â Áߺ¹»ó¼ÓÀÇ È¿°ú¸¦ º¸°í ÀÖ½À´Ï´Ù. ÀÎÅÍÆäÀ̽ºµµ Ŭ·¡½ºÀÇ ÇÑ Á¾·ùÀ̱⠶§¹®¿¡ Object Ŭ·¡½º¿Í ÀÎÅÍÆäÀ̽ºÀÇ Áߺ¹»ó¼Ó °³³äÀÌ Àû¿ëµÇ¸ç, ÀÎÅÍÆäÀ̽º ÀÚü´Â ¾Æ¹öÁöÀÇ Áߺ¹»ó¼ÓÀÇ ¸ðÈ£¼ºÀ» ¾î´À Á¤µµ ÇØ°áÇϰí Àֱ⵵ ÇÕ´Ï´Ù. ±×¸®°í Ŭ·¡½º´Â ´Ü Çϳª¸¸À» »ó¼ÓÇÒ ¼ö ÀÖÁö¸¸ ÀÎÅÍÆäÀ̽º´Â ¿©·¯ °³¸¦ »ó¼ÓÇØ¼ »ç¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ Áߺ¹ »ó¼ÓÀÇ °³³äÀÌ ÇÊ¿äÇÒ °æ¿ì ÀÎÅÍÆäÀ̽º¸¦ ¸¹ÀÌ »ç¿ëÇϰí ÀÖ½À´Ï´Ù.
¾ÕÀÇ ¿¹Á¦´Â dz¼ºÇÑ À̾߱⠰Ÿ®¸¦ Á¦°øÇÕ´Ï´Ù. Á¦ÀÏ ¸ÕÀú ÀÎÅÍÆäÀ̽º°¡ ÀÎÅÍÆäÀ̽º¸¦ »ó¼ÓÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. º¸ÅëÀÇ Å¬·¡½º »ó¼Ó°ú ´Ù¸¥ Á¡ÀÌ ¾ø½À´Ï´Ù. ÀÌ·¸°Ô µÇ¸é ÀÎÅÍÆäÀ̽º InterC¿¡´Â a ¸Þ¼µå¿Í c ¸Þ¼µå, µÎ °³ÀÇ ¸Þ¼µå ¼±¾ðÀÌ ÀÖ°Ô µÇ°ÚÁö¿ä. ÀÌ ÀÎÅÍÆäÀ̽º¸¦ »ó¼ÓÇϴ Ŭ·¡½º´Â µÎ °³ÀÇ ¸Þ¼µå¸¦ ÀüºÎ ±¸ÇöÇØ¾ß ÇÏ´Â °ÍÀº ¹°·Ð À̰í¿ä.
n interface InterC : InterA
´ÙÀ½Àº ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇØ Áߺ¹ »ó¼ÓÇÏ´Â ÇüŸ¦ º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù. ¾Æ·¡¿Í °°ÀÌ ¿©·¯ °³ÀÇ ÀÎÅÍÆäÀ̽º¸¦ µ¿½Ã¿¡ »ó¼ÓÇÏ·Á¸é ÄÞ¸¶·Î ±¸ºÐÇØ¼ ³ª¿ÇØÁÖ¸é µË´Ï´Ù. ´Ù¸¸, ÁÖÀÇÇÏ½Ç Á¡Àº Ŭ·¡½º¿Í °°ÀÌ »ó¼ÓÀ» ÇÏ´Â °æ¿ì¿¡´Â ¹Ýµå½Ã Ŭ·¡½º¸íÀ» Á¦ÀÏ ¾Õ¿¡ ¸í½ÃÇØ¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.
n class MultiInheritance : Object, InterB, InterC
´«½ä¹Ì°¡ ÀÖ´Â ºÐµéÀº ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϴ Ŭ·¡½º¿¡¼ ÀÌ»óÇÑ Á¡À» ¹ß°ßÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¹Ù·Î ÀÎÅÍÆäÀ̽ºÀÇ Ãß»ó¸Þ¼µå¸¦ ±¸ÇöÇÏ´Â ´ÙÀ½ÀÇ ÄÚµåµéÀÔ´Ï´Ù.
n public void a() { ¡¦ }
n public void b() { ¡¦ }
n public void c() { ¡¦ }
Á¶±Ý ÀÌ»óÇÏÁö ¾ÊÀ¸¼¼¿ä. ¿Ö Á¢±ÙÁöÁ¤ÀÚ°¡ publicÀ̸ç, ¹ÝȯÇüÀº void·Î ¸Å°³º¯¼ö ¾øÀÌ ±¸ÇöÀÌ µÇ´ÂÁö ¸»ÀÔ´Ï´Ù. ¸»ÀÌ ³ª¿Â ±è¿¡ Á»´õ ÀÚ¼¼È÷ ¾Ë¾Æº¸°í °¡°Ú½À´Ï´Ù.
¸Þ¼µå ±¸ÇöÀÇ ¹ýÄ¢
ÀÎÅÍÆäÀ̽º¸¦ »ó¼Ó ¹Þ¾Æ ÆÄ»ýŬ·¡½º¿¡¼ ±¸ÇöÇÒ ¶§´Â ±¸Çö ¸Þ¼µåÀÇ ÇüÅ¿¡ ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù. ¹Ýµå½Ã ÀÎÅÍÆäÀ̽º¿¡¼ÀÇ ¸Þ¼µå Çü½Ä°ú ±¸ÇöµÇ´Â Ŭ·¡½º¿¡¼ÀÇ ¸Þ¼µå Çü½ÄÀÌ µ¿ÀÏÇØ¾ß ÇÕ´Ï´Ù. ¸Þ¼µåÀÇ ÇüÅ´ Á¢±ÙÁöÁ¤ÀÚ, ¹ÝȯÇü, ¸Þ¼µå À̸§, ¸Å°³º¯¼öÀÇ Çü°ú °³¼ö·Î ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù.
¸ÕÀú Á¢±ÙÁöÁ¤ÀÚ°¡ publicÀ¸·Î ¼±¾ðµÈ ÀÌÀ¯´Â °£´ÜÇÕ´Ï´Ù. ÀÎÅÍÆäÀ̽º ¸â¹öÀÇ Á¢±ÙÁöÁ¤ÀÚ´Â º°´Ù¸¥ ¸í½Ã°¡ ¾øÀ¸¸é publicÀ¸·Î µÈ´Ù°í ¾Õ¿¡¼ ¸»¾¸ µå·È´Âµ¥ ±â¾ï ³ª½Ã´ÂÁö¿ä. ±×·¸±â ¶§¹®¿¡ ±¸Çö Ŭ·¡½º¿¡¼µµ ÀÌ¿Í ÀÏÄ¡ ½Ã۱â À§ÇØ publicÀ» ¸í½ÃÇÑ °ÍÀÔ´Ï´Ù. Ŭ·¡½ºÀÇ ¸â¹ö´Â Á¢±ÙÁöÁ¤ÀÚ°¡ ¸í½ÃµÇÁö ¾ÊÀ¸¸é privateÀ¸·Î ÁöÁ¤ÀÌ µÇ°Åµç¿ä.
¶ÇÇÑ ÀÎÅÍÆäÀ̽ºÀÇ Ãß»ó¸Þ¼µå´Â ¹ÝȯÇüÀÌ ¾ø´Â void·Î ¼±¾ðÀÌ µÇ¾ú±â ¶§¹®¿¡ Ŭ·¡½º¿¡¼µµ void·Î ÇØÁØ °ÍÀÔ´Ï´Ù. ¸Å°³º¯¼öµµ °°Àº ¸Æ¶ôÀÔ´Ï´Ù. ¸¸¾à ÀÎÅÍÆäÀ̽º¿¡¼ ¹ÝȯÇüÀ» int·Î Çß´Ù¸é Ŭ·¡½º¿¡¼µµ int·Î ÇØÁÖ¾î¾ß ÇÒ °ÍÀ̰í, ¸Å°³º¯¼ö·Î ¹«¾ùÀΰ¡¸¦ ³Ñ±æ ¶§¿¡´Â ¸Å°³º¯¼öÀÇ Çü°ú °³¼ö±îÁö µ¿ÀÏÇØ¾ß ÇÕ´Ï´Ù. ¸Þ¼µåÀÇ À̸§ÀÌ °°¾Æ¾ß µÈ´Ù´Â °ÍÀº ´ç¿¬ÇÑ ¼Ò¸®ÀÔ´Ï´Ù.
Áߺ¹ »ó¼ÓÇÒ ¶§ ÁÖÀÇÇØ¾ß ÇÒ Á¡ÀÌ ¶Ç Çϳª ÀÖ½À´Ï´Ù. ¹Ù·Î »ó¼ÓµÇ´Â ÀÎÅÍÆäÀ̽ºµéÀÇ ¸â¹ö À̸§ÀÌ µ¿ÀÏÇÒ °æ¿ì,