¼Ò¼³°°ÀºC#  Á¦5°­ÀÇ C#ÀÇ ´ÙÇü¼º  08. Ãß»ó¸Þ¼­µå  

 

 

5.8 Ãß»ó¸Þ¼­µå

 

Ãß»ó¸Þ¼­µå(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°­ÀÇ
ÀúÀÚ:ÃÖ¿µ°ü