¼Ò¼³°°ÀºC#  Á¦4°­ÀÇ C#ÀÇ °´Ã¼ÁöÇâ  01. Overloading  

 

 

4.1 Overloading

 

¿À¹ö·Îµù(Overloading)Àº °°Àº À̸§À» °¡Áø ¿©·¯ °³ÀÇ ¸Þ¼­µå¸¦ ¸»ÇÕ´Ï´Ù. º¸Åë ´ÙÁßÁ¤ÀÇ, Áߺ¹¸Þ¼­µå¶ó°í ºÎ¸£¸ç ÀϹÝÀûÀ¸·Î´Â ¿À¹ö·Îµù(Overloading)À̶ó°í ÇÕ´Ï´Ù. À̰ÍÀº ÇϳªÀÇ À̸§À¸·Î ¿©·¯ °³ÀÇ ¸Þ¼­µå¸¦ °¡Áö°í ÀÖ´Ù´Â ¶æÀ» ³»Æ÷Çϰí Àִµ¥, ¿À¹ö·ÎµùÀº Ŭ·¡½ºÀÇ »ç¿ëÀÚ¸¦ ÆíÇÏ°Ô Çϱâ À§Çؼ­ »ç¿ëÇÏ´Â °´Ã¼ÁöÇâÀÇ ±â¹ýÀÔ´Ï´Ù.

 

¿À¹ö·ÎµùÀÇ °æ¿ì ÇÊ¿ä ¾ø´Ù¸é ÇÁ·Î±×·¥À» ÇÒ ¶§ »ç¿ëÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. ÇÏÁö¸¸ ¾ÆÁÖ À¯¿ëÇÑ ¸éÀÌ ÀÖ½À´Ï´Ù. ÀÏ´Ü ±âÃÊÀûÀÎ ¿À¹ö·ÎµùÀÇ °³³äÀ» ÆÄ¾ÇÇØº¸°í ¿À¹ö·ÎµùÀ» »ç¿ëÇßÀ» ¶§ÀÇ ÀåÁ¡¿¡ ´ëÇØ¼­ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

¢Ã ¿À¹ö·Îµù(Overloading)

q                ÇϳªÀÇ Å¬·¡½º ³»¿¡¼­ ´Ù¸¥ ±â´ÉÀ» °¡Áö¸é¼­ °°Àº À̸§À» °¡Áø ¸Þ¼­µå

q                ¸Þ¼­µåµéÀÇ ±¸º°Àº ¸Þ¼­µåÀÇ ¸Å°³º¯¼öÀÇ °³¼ö¿Í ¸Å°³º¯¼öÀÇ Çü¿¡ ÀÇÇØ¼­ ±¸ºÐ

q                ¸®ÅÏŸÀÔ(Return Type)À¸·Î´Â ±¸º°ÇÏÁö ¾Ê´Â´Ù.

 

¿À¹ö·ÎµùÀ» ÀÌ¿ëÇÏ¿© µÎ ¼ö¸¦ ÇÕÇÏ´Â ¿¹¸¦ µé¾îº¸ÁÒ.

 

 

&

OverloadCalc.cs

Ü OverloadingÀ» Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦

using System;

public class OverloadCalc {

           public int Plus(int a, int b) {

                   return(a+b);

           }

           public float Plus(float a, float b) {

                   return(a+b);

           }

           public double Plus(double a, double b) {

                   return(a+b);

           }

           public static void Main() {

                   OverloadCalc oc=new OverloadCalc();

                   int i=oc.Plus(3,5);

                   float j=oc.Plus(0.1f,0.2f);

                   double k=oc.Plus(0.5,0.7);

                          Console.WriteLine("intÇÕ:{0}", i);

                          Console.WriteLine("floatÇÕ:{0}", j);

                          Console.WriteLine("doubleÇÕ:{0}", k);

           }

}

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

C:\C#Example\04>OverloadCalc

intÇÕ:8

floatÇÕ:0.3

doubleÇÕ:1.2

 

À§ÀÇ ¿¹Á¦¿¡¼­´Â °°Àº À̸§ÀÇ ¸Þ¼­µå¸¦ 3°³ °¡Áö°í ÀÖ½À´Ï´Ù. Áߺ¹ Á¤ÀÇÇÑ ¸Þ¼­µå´Â ´ÙÀ½°ú °°½À´Ï´Ù.

 

1 Ŭ·¡½º ³»ÀÇ ¿À¹ö·Îµù ¸Þ¼­µåµé

n                 public int plus(int a, int b){ }

n                 public float plus(float a, float b){ }

n                 public double plus(double a, double b){ }

 

µÎ ¼ö¸¦ ´õÇÒ ¶§ ¿ì¸®´Â ½±°Ô intÇü¸¸À» »ý°¢ÇÏ°Ô µË´Ï´Ù. Áï, intÇüÀÇ ¼ö°¡ ´õÇØÁ®¼­ ÇÕÀ» ¸®ÅÏ(return) Çϸ®¶ó »ý°¢ÇÕ´Ï´Ù. À̰ÍÀº Áö±ØÈ÷ ´ç¿¬ÇÑ ÀÏÀÔ´Ï´Ù. ÇÏÁö¸¸ ÇÕÇÏ´Â °ÍÀÌ intÇü¸¸ ÀÖ°Ú½À´Ï±î? ´Ù¸¥ ÇüµéÀÇ ÇÕµµ Á¸ÀçÇÕ´Ï´Ù. À̰ÍÀº ÄÄÇ»ÅÍ ¾ð¾î¿¡¼­´Â µ¥ÀÌÅÍŸÀÔÀ» ¾ÆÁÖ Á¤¹ÐÇÏ°Ô ±¸ºÐÇϰí ÀÖ°í ¸Þ¼­µåÀÇ ¸Å°³º¯¼öÀÇ ÇüÀº ¹Ýµå½Ã ÁöÄÑÁ®¾ß µÈ´Ù´Â ¿øÄ¢ ¶§¹®¿¡ ÇϳªÀÇ ¸Þ¼­µå·Î´Â ´Ù¾çÇÑ °è»êÀ» ÇØ ³¾ ¼ö ¾ø´Â °ÍÀÔ´Ï´Ù.

 

ÀϹÝÀûÀ¸·Î ¿©·¯ºÐÀÌ ¸Þ¼­µå¸¦ ¸¸µé ¶§ ¸Þ¼­µåÀÇ ¸Å°³º¯¼ö Çü, ¸Å°³º¯¼öÀÇ °³¼ö ±×¸®°í ¸®ÅÏ ÇüÀÌ ´Ù¸£´Ù¸é ¸Þ¼­µå¸¦ °¢ÀÚ µû·Î ¸¸µé¾î ÁÖ¾î¾ß ÇÕ´Ï´Ù. ¹°·Ð À̸§µµ ´Ù¸£°ÚÁÒ. ÇÏÁö¸¸ ÀÌ·¯ÇÑ ¾àÁ¡À» º¸¿ÏÇϱâ À§Çؼ­ °´Ã¼ÁöÇâ¿¡¼­´Â ÇϳªÀÇ ¸Þ¼­µåÀÇ À̸§À¸·Î ´Ù¾çÇÑ ¸Å°³º¯¼ö¸¦ ¹Þ¾Æ µéÀÏ ¼ö ÀÖ´Â ¸Þ¼­µå¸¦ Áö¿øÇÕ´Ï´Ù. À̰ÍÀ» ¿ì¸®´Â ¿À¹ö·Îµù(Overloading)À̶ó°í ÇÕ´Ï´Ù.

 

¿À¹ö·Îµù¿¡´Â ¾ÆÁÖ ¸¹Àº ¸Þ¼­µå°¡ Á¸ÀçÇÒ ¼ö ÀÖ½À´Ï´Ù. À§ÀÇ ¿¹Á¦¿¡¼­ ¿ì¸®´Â 3°³ÀÇ ¸Þ¼­µå¸¦ ã¾Æ º¼ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ ÀÔÀå¿¡¼­´Â plus¸¦ »ç¿ë ÇϰíÀÚ ÇÒ ¶§ ¸Å°³º¯¼ö Çü¿¡ ½Å°æ ¾µ Çʿ䰡 ¾ø½À´Ï´Ù. »ç¿ëÀÚ°¡ plus() ¸Þ¼­µåÀÇ ¸Å°³º¯¼ö·Î 2.0f¿Í 5.0f¸¦ ÀÔ·ÂÇÑ´Ù¸é ÀÚµ¿À¸·Î float plus(float a, float b) ¸Þ¼­µå°¡ È£ÃâµË´Ï´Ù. ³»ºÎ¿¡¼­ 3°³ÀÇ ¸Þ¼­µå Áß ¾Ë¸ÂÀº ¸Þ¼­µå¸¦ ã¾Æ¼­ È£Ãâ ÇØ Áֱ⠶§¹®ÀÔ´Ï´Ù.

 

¢Ã ³»ºÎ¿¡¼­ ¿À¹ö·Îµù ¸Þ¼­µå¸¦ ±¸º°ÇÏ´Â ¹æ¹ý

q                ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍŸÀÔ°ú ¸Å°³º¯¼öÀÇ °³¼ö·Î ±¸º°ÇÑ´Ù.

 

ÇÏÁö¸¸ plus ¸Þ¼­µå°¡ È£Ã⠵ǾúÀ» ¶§ ÄÄÆÄÀÏ·¯´Â ³»ºÎÀûÀ¸·Î´Â 3°³ Áß¿¡ ¾î´À ¸Þ¼­µå°¡ È£ÃâµÇ¾ú´ÂÁö ±¸ºÐÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. À̸§Àº °°°í ¸Å°³º¯¼öÀÇ Çü, ¸Å°³º¯¼öÀÇ °³¼ö ±×¸®°í ¸®ÅÏ °ªÀÌ Æ²¸± ¼ö Àֱ⠶§¹®¿¡ ±¸ºÐÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ÀÌ ¼¼°¡Áö ÁßÀÇ ÀÖ°ÚÁÒ. ¸®ÅÏŸÀÔÀº °¢°¢ÀÇ Çü¿¡ µû¶ó Ʋ·ÁÁú ¼ö µµ ÀÖÀ¸¸ç °°¾ÆÁú ¼öµµ Àֱ⠶§¹®¿¡ ¸®ÅÏŸÀÔÀ¸·Î´Â ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù. ±×·¸´Ù¸é ³²¾Æ ÀÖ´Â °ÍÀº ¸Å°³º¯¼öÀÇ Çü°ú ¸Å°³º¯¼öÀÇ °³¼öÀÔ´Ï´Ù. Á¤È®ÇÏ°Ô ³»ºÎÀûÀ¸·Î »ç¿ëÀÚ°¡ plus()¶ó´Â ¸Þ¼­µå¸¦ È£Ãâ ÇßÀ» ¶§ ¸Å°³º¯¼öÀÇ Çü°ú ¸Å°³º¯¼öÀÇ °³¼ö·Î ±¸ºÐÇÕ´Ï´Ù.

 

¢Ã ¿À¹ö·Îµù(Overloading)À» »ç¿ëÇÒ ¶§ÀÇ ±ÔÄ¢

q                ¸Å°³º¯¼öÀÇ °³¼ö°¡ ´Þ¶ó¾ß ÇÑ´Ù

q                ¸Å°³º¯¼öÀÇ Å¸ÀÔÀÌ ´Þ¶ó¾ß ÇÑ´Ù

q                À§ÀÇ °³¼ö¿Í ŸÀÔ Áß Çϳª¸¸ ´Þ¶óµµ ¿À¹ö·Îµù(Overloading)ÀÇ Á¶°ÇÀÌ ¼º¸³ µÈ´Ù.

q                ¸Þ¼­µåÀÇ ¸®ÅÏŸÀÔÀº ¿À¹ö·Îµù(Overloading)À» ±¸ºÐÇÒ ¶§ »ç¿ëÇÏÁö ¾Ê´Â´Ù.

 

¿À¹ö·Îµù(Overloading)À» ³»ºÎÀûÀ¸·Î À§ÀÇ ¹æ½ÄÀ» »ç¿ëÇÏ¿© ±¸ºÐÇϰí, ¿©·¯ºÐÀÌ Á÷Á¢ ¿À¹ö·ÎµùÀ» ¸¸µé°íÀÚ ÇÑ´Ù¸é À§ÀÇ ±ÔÄ¢À» ¹Ýµå½Ã ÁöÄÑ¾ß ÇÕ´Ï´Ù.

 

±×·¸´Ù¸é, ¿À¹ö·ÎµùÀº ´©±¸¸¦ À§ÇÑ °ÍÀϱî¿ä? Ŭ·¡½º¸¦ ¸¸µå´Â »ç¶÷ ÀÔÀåÀϱî¿ä? ¾Æ´Ï¸é Ŭ·¡½º¸¦ »ç¿ëÇÏ´Â ÀÔÀåÀϱî¿ä? ¸¸µé¾îÁø Ŭ·¡½º¸¦ »ç¿ëÇÏ´Â »ç¶÷ ÀÔÀå¿¡¼­ º¸¸é ¿À¹ö·ÎµùÀº ¾ÆÁÖ Æí¸®ÇÕ´Ï´Ù. ±×·¯³ª À̰ÍÀ» ¸¸µå´Â »ç¶÷Àº ¾ÆÁÖ °í»ý ²Ï³ª ÇϰÚÁÒ. ¿Ö³ÄÇϸé ÀϹÝÀûÀÎ ±ÔÄ¢À» ÁöÄѰ¡¸é¼­ ¸¸µé¾î¾ß Çϰí, ¿©·¯ °¡Áö °æ¿ì¿¡ ´ëó¸¦ ÇØ¾ß Çϱ⠶§¹®ÀÔ´Ï´Ù.

 

¾ð¾îÀÇ ±âº»ÀûÀΠƯ¼º»ó ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍ ÇüÀ̳ª °³¼ö°¡ ´Ù¸£¸é ¸Þ¼­µå ¶ÇÇÑ ´Ù½Ã ¸¸µé¾î¾ß ÇÏÁö¸¸, ¿À¹ö·ÎµùÀÇ °³³äÀ» Áö¿øÇؼ­ À̸¦ º¸´Ù Æí¸®ÇÏ°Ô Ã³¸®Çϰí ÀÖ½À´Ï´Ù. ±×¸®°í »ç¿ëÀÚ Ãø¸éÀÇ ÀÎÅÍÆäÀ̽º´Â ÈξÀ °£ÆíÇØ Áö´Â °ÍÀÔ´Ï´Ù.

 

¢Ã ¿À¹ö·Îµù(Overloading)À» »ç¿ëÇÏ´Â ÀÌÀ¯

q                ÇØ´ç Ŭ·¡½ºÀÇ ¸Þ¼­µå¸¦ »ç¿ëÇÒ ¶§ »ç¿ëÀÚÀÇ Æí¸®¼ºÀ»