¼Ò¼³°°ÀºC#  Á¦4°­ÀÇ C#ÀÇ °´Ã¼ÁöÇâ  06. »ý¼ºÀÚ(Constructor)  

 

 

4.6 »ý¼ºÀÚ(Constructor)

 

Ŭ·¡½º¸¦ ÀÌ¿ëÇÏ¿© ¸Þ¸ð¸®¸¦ °¡Áø ÀνºÅϽº(Instance) Áï, °´Ã¼¸¦ »ý¼ºÇÒ ¶§ Á¦ÀÏ ¸ÕÀú È£ÃâµÇ´Â ¸Þ¼­µå¸¦ »ý¼ºÀÚÀÔ´Ï´Ù. ¿©·¯ºÐÀº ÀÌ¹Ì »ý¼ºÀÚ¸¦ »ç¿ëÇϰí ÀÖ¾ú½À´Ï´Ù. »ý¼ºÀÚ¸¦ µû·Î ¸¸µéÁö ¾Ê´Â´Ù¸é ¿©·¯ºÐÀÌ ¸¸µç Ŭ·¡½º¿¡¼­ ÀÚµ¿À¸·Î µðÆúÆ® »ý¼ºÀÚ(Default Constructor)°¡ ¸¸µé¾îÁö°Ô µË´Ï´Ù. ¾Õ ÀýÀÇ ¿¹Á¦¿¡¼­ ¿ì¸®´Â ´ÙÀ½°ú °°Àº ±¸¹®À» »ç¿ëÇß½À´Ï´Ù.

 

&

MainTest.cs

Ü µðÆúÆ®»ý¼ºÀÚ¸¦ À§ÇÑ ¿¹Á¦

using System;

public class MainTest {

       public void SayHello() {

                 Console.WriteLine("Hello World!");

       }

       public static void Main() {

                       MainTest m = new MainTest();//µðÆúÆ®»ý¼ºÀÚ È£Ãâ

                 m.SayHello();

       }

}

MainTest()¶ó´Â ¸Þ¼­µå´Â ¾ø½À´Ï´Ù. ¸¸µéÁöµµ ¾Ê¾ÒÁÒ. ÀÌ ¶§ ¿©·¯ºÐÀÌ Å¬·¡½ºÀÇ À̸§°ú °°Àº »ý¼ºÀÚ¸¦ ¸¸µéÁö ¾Ê´Â´Ù¸é C#¿¡¼­´Â ±âº»ÀûÀ¸·Î µðÆúÆ®»ý¼ºÀÚ(Default Consturctor)¶ó´Â °ÍÀÌ ¸¸µé¾îÁö´Âµ¥ ÀÌ µðÆúÆ®»ý¼ºÀÚ°¡ ¹Ù·Î MainTest()ÀÔ´Ï´Ù. ¸Þ¸ð¸®°¡ »ý¼ºµÈ Á÷ÈÄ °¡Àå ¸ÕÀú È£ÃâµÇ´Â ¸Þ¼­µåÀÔ´Ï´Ù. ¹°·Ð ÇöÀçÀÇ µðÆúÆ® »ý¼ºÀÚ´Â ÇÏ´Â ÀÏÀÌ ¾ø½À´Ï´Ù. ´ÜÁö »ý¼ºÀÚ¶ó°í Ç¥½Ã¸¸ ÇÒ »ÓÀÔ´Ï´Ù.

 

Áï, Ŭ·¡½º¸¦ ¸¸µé ¶§ »ç¿ëÀÚ°¡ µû·Î »ý¼ºÀÚ¸¦ ¸¸µéÁö ¾Ê´Â´Ù¸é ¸Å°³º¯¼ö°¡ ¾ø´Â µðÆúÆ®»ý¼ºÀÚ ¡®MainTest()¡¯°¡ ¸¸µé¾îÁ®¼­ »ç¿ëµÇ¸ç, µðÆúÆ® »ý¼ºÀÚ¸¦ ¿©·¯ºÐÀÌ ¾à°£ º¯ÇüÇÏ¿© ¸¸µé°Å³ª ¾Æ´Ï¸é ¸Å°³º¯¼ö°¡ ÀÖ´Â »ý¼ºÀÚ¸¦ ´Ù½Ã ¸¸µç´Ù¸é ±âÁ¸ÀÇ µðÆúÆ® »ý¼ºÀÚ´Â ¾ø¾îÁö°í »õ·Î¿î »ý¼ºÀÚ°¡ ¸¸µé¾îÁö´Â °ÍÀÔ´Ï´Ù.

 

¢Ã »ý¼ºÀÚÀÇ Æ¯Â¡

q                »ý¼ºÀÚ´Â ¸®ÅÏŸÀÔ(Return Type)ÀÌ ¾ø´Ù.

q                »ý¼ºÀÚÀÇ À̸§Àº Ŭ·¡½ºÀÇ À̸§°ú µ¿ÀÏÇÏ´Ù.

q                new¿¬»êÀÚ°¡ Èü(Heap)¿µ¿ª¿¡ ¸Þ¸ð¸®¸¦ »ý¼ºÇÑ Á÷ÈÄ È£ÃâµÈ´Ù.

 

»ý¼ºÀÚ´Â À¯ÀÏÇÏ°Ô ¸®ÅÏŸÀÔÀÌ ¾ø´Â ¸Þ¼­µåÀÔ´Ï´Ù. ±×¸®°í »ý¼ºÀÚÀÇ À̸§Àº Ŭ·¡½ºÀÇ À̸§°ú µ¿ÀÏÇϸç ÀϹÝÀûÀ¸·Î ÃʱâÈ­³ª ¸â¹öÀÇ ±âº»°ª ÇÒ´çÀ» À§ÇØ »ç¿ëµË´Ï´Ù. º¸ÅëÀÇ °æ¿ì Ŭ·¡½º ÀÛ¾÷À» ÇÒ ¶§ Á¦ÀÏ ¸ÕÀú ÇÁ·Î±×·¥ ÇØ¾ß ÇÏ´Â °ÍµéÀ» »ý¼ºÀÚ ³»¿¡ ÇÁ·Î±×·¥ ÇÏ°Ô µË´Ï´Ù.

 

»ý¼ºÀÚ´Â new ¿¬»êÀÚ¿Í ÇÔ²² »ç¿ëµÇ´Âµ¥ new ¿¬»êÀÚ°¡ ¸Þ¸ð¸®¸¦ »ý¼ºÇÏ°í ³ª¸é ¸â¹öÇʵåµéÀÌ ¸Þ¸ð¸®¸¦ ÇÒ´ç ¹Þ°Ô µË´Ï´Ù. ¸â¹öÇʵåµéÀÌ ¸Þ¸ð¸®°¡ Á¸ÀçÇϱ⠶§¹®¿¡ ¸â¹öÇʵ忡 °ªÀ» ÇÒ´çÇϰųª ÃʱâÈ­¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̶§ »ý¼ºÀÚ°¡ Ȱµ¿À» ÇÏ´Â °ÍÀÔ´Ï´Ù. º¸ÅëÀº ¸â¹öÇʵåÀÇ ÃʱâÈ­¸¦ ÁÖ·Î ÇÏÁö¸¸ ÇÊ¿äÇÏ´Ù¸é °´Ã¼ÀÇ »ý¼º°ú µ¿½Ã¿¡ ÇØ ÁÖ¾î¾ß ÇÏ´Â ÀÛ¾÷µéÀ» ÀÌ »ý¼ºÀÚ¿¡¼­ ÇÏ°Ô µË´Ï´Ù.

 

»ý¼ºÀÚ°¡ ¾ø´Â Ŭ·¡½º¿¡ ´ëÇÏ¿© ÄÄÆÄÀÏ·¯´Â ¸Å°³º¯¼ö¸¦ °¡ÁöÁö ¾Ê´Â »ý¼ºÀÚ¸¦ ÀÚµ¿À¸·Î Á¦°øÇÕ´Ï´Ù. ÀÌ »ý¼ºÀÚ¸¦ ¿ì¸®´Â µðÆúÆ®»ý¼ºÀÚ(Default Constructor)¶ó°í ºÎ¸¨´Ï´Ù. »ý¼ºÀÚÀÇ ¿ªÇÒÀº ÃʱâÈ­ ÀÛ¾÷À̶ó°í Çß½À´Ï´Ù. »ý¼ºÀÚ¿¡ °ü·ÃµÈ ¿¹Á¦¸¦ Çϳª ¸¸µé¾î º¸µµ·Ï ÇÏÁÒ.

 

&

ConstructTest.cs

Ü »ý¼ºÀÚ¸¦ Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦

using System;

public class ConstructTest {

       private String name = null;

       private String address = null;

       private int age = 0;

       public ConstructTest() {

                    this.name = "À̸§¾øÀ½";

                    this.address = "ÁÖ¼Ò¾øÀ½";

               this.age = 0;

       }

       public void SetList(String sname, String saddress, int sage) {

               this.name = sname;

               this.address = saddress;

               this.age = sage;

       }

       public String GetList() {

               String str = name + "  " + address + "   " + age;

               return str;

       }

       public static void Main() {

               ConstructTest ct = new ConstructTest();

               String s;

               s = ct.GetList();

               Console.WriteLine(s);

                    ct.SetList("È«±æµ¿", "¼­¿ï½Ã Áß±¸", 25);

               s = ct.GetList();

               Console.WriteLine(s);

       }

}

C:\C#Example\04csc ConstructTest.cs

C:\C#Example\04ConstructTest

À̸§¾øÀ½  ÁÖ¼Ò¾øÀ½   0

È«±æµ¿  ¼­¿ï½Ã Áß±¸   25

 

»ý¼ºÀÚ¿¡¼­ °ªÀ» name, address, age ¸â¹öÇʵ忡 ÇÒ´çÇϰí ÀÖ½À´Ï´Ù. ±×·¸±â ¶§¹®¿¡ °´Ã¼¸¦ »ý¼ºÇÑ Á÷ÈÄ ¹Ù·Î GetList() ¸â¹ö¸Þ¼­µå¸¦ È£Ãâ ÇßÀ» ¶§ »ý¼ºÀÚ¿¡¼­ ÃʱâÈ­ÇÑ °ªÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ´Ù½Ã SetList() ¸Þ¼­µå¸¦ ÅëÇØ¼­ °ªÀ» ÇÒ´çÇÑ ÀÌÈÄ¿¡´Â ¹Ù²î°ÚÁÒ. ÀÌ·¸°Ô »ý¼ºÀÚ¿¡¼­ ¿ì¼±ÀûÀ¸·Î °ªÀ» ÇÒ´çÇØ¾ß ÇÒ °æ¿ì°¡ ÀÖ´Ù¸é »ý¼ºÀÚ¸¦ ÀÌ¿ëÇÏ¸é ¾ÆÁÖ ÆíÇÏ°Ô ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í, À§ÀÇ ¿¹Á¦¿¡¼­ this´Â ¾ÕÀ¸·Î ³ª¿Ã Àýµé¿¡¼­ ¼³¸íÇϵµ·Ï ÇÏÁÒ.

 

»ý¼ºÀÚµµ ¸Å°³º¯¼ö¸¦ ÀÌ¿ëÇÏ¿© ¿ÜºÎ·ÎºÎÅÍ Á÷Á¢ »ý¼ºÀÚ¿¡ °ªÀ» ÇÒ´çÇÏ´Â ¹æ¹ýÀ¸·Î ¸â¹öÇʵ带 ÃʱâÈ­ ÇÒ ¼ö µµ ÀÖ½À´Ï´Ù. ±× ¿¹¸¦ »ìÆì º¸±â·Î ÇÏÁÒ.

 

&

ConstructDirect.cs

Ü »ý¼ºÀÚ¸¦ Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦

using System;

public class ConstructDirect {

        private String name = null;

        private String address = null;

        private int age = 0;

        public ConstructDirect(String sname, String saddress, int sage)  {

                 this.name = sname;

                 this.address = saddress;

                 this.age = sage;

        }

        public void SetList(String sname, String saddress, int sage) {

                 this.name = sname;

                 this.address = saddress;

                 this.age = sage;

        }

        public String GetList(){

                 String str = name + "  " + address + "   " + age;

                 return str;

        }

        public static void Main() {

                       ConstructDirect ct = new ConstructDirect("È«±æµ¿", "¼­¿ï½Ã Áß±¸", 25);

                 String s;

                 s = ct.GetList();

                 Console.WriteLine(s);

        }

}

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

C:\C#Example\04>ConstructDirect

È«±æµ¿  ¼­¿ï½Ã Áß±¸   25

 

¿ì¸®´Â ÀÌ ¿¹Á¦¿¡¼­ »ý¼ºÀÚ¿¡¼­ ¸Å°³º¯¼ö¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» ½±°Ô º¼ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÌ ÀÌ ¿¹Á¦Ã³·³ ¸Å°³º¯¼ö°¡ ÀÖ´Â »ý¼ºÀÚ¸¦ ¸¸µé¾ú´Ù¸é µðÆúÆ® »ý¼ºÀÚ´Â ´õ ÀÌ»ó »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.

 

¸Å°³º¯¼ö ÀÖ´Â »ý¼ºÀÚ¸¦ ¸¸µé¸é µðÆúÆ® »ý¼ºÀÚ´Â »ç¿ëÇÒ ¼ö ¾ø´Ù.

public class Test {

         public Test(int a){

                  //

         }

         public static void Main(){

                        Test t = new Test();// ¿¡·¯ ¹ß»ý

         }

};//class

 

±×¸®°í ¹Ýµå½Ã »ý¼ºÀÚ¸¦ »ç¿ëÇÒ ¶§ ¸Å°³º¯¼öÀÇ °³¼ö¿Í