C#

[class] C# - Constructors (생성자)

2,628
목차
  1. Constructors (생성자)
  2. Constructor Parameters (생성자 매개변수)
  3. 생성자 장점 : 시간 절약 (∵ 코드량 ↓)

 

Constructors (생성자)

 

객체 초기화에 사용되는 특수 메서드.

 


 

※ 클래스의 객체가 생성될 때 호출됨.

※ 객체 속성 초기값 설정에 사용 가능.

※ 클래스 이름과 일치해야함.

※ 반환 타입(예: void, int)을 가질 수 없음.

※ 모든 클래스엔 기본적으로 생성자가 있음.

※ 별도로 생성 안 하면, C#이 직접 생성. 

※ C#이 생성자 생성 시, 초기값 설정 불가.

※ 생성자는 시간 절약해 줌. (맨 하단 참고) 

 


[예제]

파일명: Hz.cs 

 

using System;

namespace Homzzang

{

  class Hz

  {

    public int x;

    

    // Hz 클래스용 '클래스 생성자'.

    public Hz()

    {

      x = 3;

    }


    static void Main(string[] args)

    {

      Hz myObj = new Hz(); // 객체 생성 시 생성자 자동 호출됨.

      Console.WriteLine(myObj.x); // 3

    }

  }

}

 

결과값: 3 

 

Constructor Parameters (생성자 매개변수)

 

생성자는 속성 초기화 위한 매개변수를 원하는 만큼 가질 수 있음.

 


[예제1] - 매개변수 1개 경우.

파일명: Hz.cs

 

using System;

namespace Homzzang

{

  class Hz

  {

    public int x;


    public Hz(int y)

    {

      x = y;

    }


    static void Main(string[] args)

    {

      Hz myObj = new Hz(3);

      Console.WriteLine(myObj.x); // 3

    }

  }

}

 

결과값: 3 


[예제2] 매개변수 2개 경우.

※ 파일명: Hz.cs

 

using System;


namespace Homzzang

{

  class Hz

  {

    public string host;

    public int open;


    public Hz(string hostName, int openYear)

    {

      host = hostName;

      open = openYear;

    }


    static void Main(string[] args)

    {

      Hz my = new Hz("Homzzang.com", 2012);

      Console.WriteLine(my.host + " (" + my.open + ")");

    }

  }

}


결과값: Homzzang.com (2012) 

 

생성자 장점 : 시간 절약 (∵ 코드량 ↓)

 

생성자 사용하면 코드양 줄여 시간 절약 가능.

즉, 생성할 객체 많을 시, 생성자 사용 코드가 훨씬 효율적.

 


[생성자 사용 X 경우]

 

1. Hz.cs  

using System;

namespace Homzzang

{

    class Member

    {

        public string id;

        public string name;

        public int level;

        public void sayHello(string x)

        {

            Console.WriteLine(x + " 님, 반가워요.");

        }

    }

}

 

 2. Index.cs

using System;

namespace Homzzang

{

    class Index

    {

        static void Main(string[] args)

        {

            Member mb1 = new Member();

            mb1.id = "sinbi";

            mb1.name = "신비";

            mb1.level = 2;


            Member mb2 = new Member();

            mb2.id = "sir";

            mb2.name = "그누";

            mb2.level = 3;


            mb1.sayHello(mb1.name);

            mb1.sayHello(mb2.name);

        }

    }

}

 

결과값:

신비 님, 반가워요.

그누 님, 반가워요.


[생성자 사용 O 경우]

 

1. Hz.cs

 

using System;

namespace Homzzang

{

    class Member

    {

        public string id;

        public string name;

        public int level;

        public Member(string mb_id, string mb_name, int mb_level)

        {

            id = mb_id;

            name = mb_name;

            level = mb_level;

        }

        public void sayHello(string x)

        {

            Console.WriteLine(x + " 님, 반가워요.");

        }

    }

}

 

2. Index.cs

 

using System;

namespace Homzzang

{

    class Index

    {

        static void Main(string[] args)

        {

            Member mb1 = new Member("sinbi", "신비", 2);

            Member mb2 = new Member("sir", "그누", 3);

            mb1.sayHello(mb1.name);

            mb2.sayHello(mb2.name);

        }

    }

}

 

결과값:

신비 님, 반가워요.

그누 님, 반가워요. 



분류 제목
class C# - OOP (객체 지향 프로그래밍)
class C# - Class (클래스) / Object (객체)
class C# - Class Members (클래스 멤버) - 속성(=필드), 메서드
class C# - Constructors (생성자)
class C# - Access Modifiers (접근 수정자)
class C# - Encapsulation (캡슐화) ※ Getter (게터) / Setter (세터)
class C# - Inheritance (상속)
class C# - Polymorphism (다형성)
class C# - Abstraction (추상화)
class C# - interface (인터페이스) ★
class C# - enums (이넘) - 상수 열거형 클래스
class C# - Files (파일) - 파일생성/파일읽기/파일쓰기
class C# - Exceptions (= Try...Catch..) - 에러 제어
목록
 홈  PC버전 로그인 일본어
그누앞단언어
그누뒷단언어
그외코딩언어
그누보드
제작의뢰
Q&A
커뮤니티 2
웹유틸
회원센터
홈짱닷컴 PC버전 로그인