Ãß»ó¸Þ¼µå(Abstract Method)´Â ¾ÆÁ÷ ±¸ÇöÀÌ ÀÌ·ç¾îÁöÁö ¾Ê°í ´ÜÁö ±× ÇÁ·ÎÅäŸÀÔ(Prototype)¸¸À» °¡Áö°í ÀÖ´Â ¸Þ¼µå¸¦ ¸»ÇÕ´Ï´Ù. Áï, ¸öü°¡ ¾ø´Â, ºó ¸ö¶×À̸¸ ÀÖ´Â ¸Þ¼µå¸¦ ¸»Çϴµ¥ ¸Þ¼µå°¡ ºí·Ï({})À» Æ÷ÇÔÇϰí ÀÖÁö ¾Ê´Ù´Â ¶æÀÔ´Ï´Ù. ¿©·¯ºÐÀÌ ÀÌ ¸öü°¡ ¾ø´Â ¸Þ¼µå¸¦ ¸¸µé·Á¸é abstract Ű¿öµå¸¦ ºÙ¿©¾ß ÇÕ´Ï´Ù. ±×¸®°í ´ç¿¬È÷ ÀÌ Ãß»ó¸Þ¼µå¸¦ Çϳª¶óµµ Æ÷ÇÔÇϰí Àִ Ŭ·¡½º¸í ¾Õ¿¡ abstract Ű¿öµå¸¦ ºÙ¿©¼ Ãß»óŬ·¡½ºÀÓÀ» Ç¥½ÃÇØÁà¾ß ÇÕ´Ï´Ù. ¾È ºÙÀÌ¸é ¿¡·¯°¡ ¹ß»ýÇϰÚÁÒ? µÚ¿¡¼ ´Ù·ê ³»¿ëÀÌÁö¸¸ abstract Ű¿öµå´Â virtual Ű¿öµåÀÇ Àǹ̰¡ ÀÚµ¿À¸·Î Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. ±×·¡¼ virtual Ű¿öµå¸¦ »ç¿ëÇÏÁö ¾ÊÁö¸¸, ÆÄ»ýŬ·¡½º¿¡¼ ¸Þ¼µå¸¦ ÀçÁ¤ÀÇ ÇÒ ¶§¿¡´Â override Ű¿öµå¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
|
¢Ã Ãß»ó¸Þ¼µå(Abstract Method) |
|
q ¸öü°¡ ¾ø´Â, ¸ö¶×À̰¡ ¾ø´Â ¸Þ¼µå q ÇÁ·ÎÅäŸÀÔ(Prototype)¸¸ °¡Áü q virtual Ű¿öµå°¡ µðÆúÆ®·Î Æ÷ÇԵǾî ÀÖÀ½ |
Ãß»óŬ·¡½º¿Í Ãß»ó¸Þ¼µå »çÀÌÀÇ °ü°è
Ãß»ó¸Þ¼µå¸¦ Æ÷ÇÔÇϰí ÀÖ´Â Ãß»óŬ·¡½º¸¦ »ó¼Ó¹Þ´Â ÆÄ»ýŬ·¡½º´Â Ãß»óŬ·¡½º°¡ °®°í ÀÖ´Â ¸ðµç Ãß»ó¸Þ¼µå¸¦ ±¸ÇöÇØ ÁÖ¾î¾ß¸¸ °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ±¸ÇöÇÑ °æ¿ì, ÆÄ»ýŬ·¡½º´Â ÇϳªÀÇ Å¬·¡½ºÃ³·³ »ç¿ëÇÒ ¼ö ÀÖ°í, °´Ã¼ÀÇ »ý¼ºµµ °¡´ÉÇÏÁö¸¸, Ãß»óŬ·¡½º¿¡¼ Ãß»ó¸Þ¼µå¸¦ ¸ðµÎ ±¸ÇöÇØ ÁÖÁö ¾ÊÀ¸¸ç ÆÄ»ýŬ·¡½ºµµ ±¸ÇöÀÌ ¿ÏÀüÈ÷ ÀÌ·ç¾îÁöÁö ¾ÊÀº Ãß»ó¸Þ¼µå¸¦ Æ÷ÇÔÇÏ°Ô µÇ¹Ç·Î Ãß»óŬ·¡½º°¡ µË´Ï´Ù. ÀÌ ¶§ ¹Ýµå½Ã ÀÌ ÆÄ»ýŬ·¡½ºµµ Ãß»óŬ·¡½º·Î ¼±¾ðÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ» °æ¿ì ¿¡·¯°¡ ¹ß»ýÇÕ´Ï´Ù. ´ÙÀ½Àº »ó¼ÓÀº ÇßÁö¸¸ Ãß»ó¸Þ¼µå¸¦ ÀüºÎ ±¸ÇöÇÏÁö ¾Ê¾Æ Ãß»óŬ·¡½º°¡ µÇ´Â ¿¹Á¦ ÀÔ´Ï´Ù.
|
& |
AbstractTestMain.cs |
Ü Ãß»ó¸Þ¼µå¸¦ ÀüºÎ±¸ÇöÇÏÁö ¾Ê¾Æ¼ ¿¡·¯°¡³ª´Â °æ¿ì |
|
using System; abstract class A { public abstract void F1(); public abstract void F2(); } class B: A{//¿¡·¯¹ß»ý : ¸ðµç Ãß»óŬ·¡½º¸¦ ±¸ÇöÇØ¾ß ÇÑ´Ù.(F2() ¸Þ¼µå´Â ±¸ÇöÇÏÁö ¾Ê¾ÒÀ½) public override void F1() { Console.WriteLine("BŬ·¡½º F()"); } } class AbstractTestMain{ public static void Main(){ B b = new B(); b.F1(); }//main }//class | ||
|
C:\C#Example\05>csc AbstractTestMain.cs AbstractTestMain.cs(6,7): error CS0534: 'B'Àº(´Â) »ó¼ÓµÈ Ãß»ó ¸â¹ö 'A.F2()'À»(¸¦) ±¸ÇöÇÏÁö ¾Ê½À´Ï´Ù. AbstractTestMain.cs(4,23): (ÀÌÀü ¿À·ù¿Í °ü·ÃµÈ ±âÈ£ À§Ä¡) | ||
Ãß»ó¸Þ¼µå´Â ±¸ÇöÀÌ ÀÌ·ç¾îÁöÁö ¾Ê°í ´ÜÁö ±× ¸Þ¼µåÀÇ À̸§¸¸ °¡Áö°í ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. ±×·¡¼ ¸öü°¡ ¾ø´Ù°í ¸»Çϰí ÀÖ´Â °ÍÀÔ´Ï´Ù. À̰ÍÀ» ¿ªÀ¸·Î ¸»ÇÑ´Ù¸é ¡®Ãß»ó¸Þ¼µå°¡ µÇ·Á¸é ¸öü°¡ ¾ø¾î¾ß ÇÑ´Ù.¡¯ ¶ó´Â ¸íÁ¦¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. º¸Åë ¿ì¸®°¡ Àü¹®ÀûÀÎ ¿ë¾î·Î À̾߱â ÇÒ ¶§ Ãß»ó¸Þ¼µå´Â ¸Þ¼µåÀÇ ÇÁ·ÎÅäŸÀÔ(Prototype)¸¸ °¡Áö°í ÀÖ´Ù¶ó°í À̾߱â ÇÕ´Ï´Ù. ±×¸®°í ÀÌ·¯ÇÑ ¹Ì¿Ï¼ºÀÇ Ãß»ó¸Þ¼µå¸¦ Æ÷ÇÔÇϰí Àִ Ŭ·¡½º´Â ´ç¿¬È÷ ¹Ì¿Ï¼º Ŭ·¡½ºÀÎ Ãß»óŬ·¡½º°¡ µÇ´Â °ÍÀÔ´Ï´Ù.
À§ ¿¹Á¦¿¡¼µµ Á¶±Ý ´À³¢½Å ºÐµµ ÀÖ°ÚÁö¸¸, Ãß»óŬ·¡½º´Â ÇÁ·Î±×·¥ÀÇ ¼³°è ´Ü°è¿¡¼ ¸¹ÀÌ ¾²ÀÔ´Ï´Ù. µ¶ÀÚÀûÀ¸·Î »ç¿ëµÇ´Â Ŭ·¡½º´Â ¾Æ´ÏÁö¸¸, ÇÁ·Î±×·¥ »óȲ¿¡ ¸Â´Â °ÔÃþÀûÀÎ ¸ðµ¨À» ¼³°èÇϵµ·Ï ÇÏ´Â ¿ªÇÒÀ» Ãß»óŬ·¡½º°¡ Çϰí ÀÖ½À´Ï´Ù.
| jabookÀúÀÚ¸íÇÔ |
|
Á¦¸ñ:¼Ò¼³°°ÀºC# Á¦5°ÀÇ ÀúÀÚ:ÃÖ¿µ°ü |