무효 클릭 IP 추적 중...
c#

[c# 기초] 생성자(constructor)란?

꼬예 2022. 5. 3.

이번 포스팅에서는 생성자가 무엇이고, 어떻게 사용하는지에 대해 알아보도록 하겠습니다.

 

1. 생성자(constructor)의 생김새

 

빨간색 사각형부분이 생성자 함수 부분입니다.

 

생성자 함수몇가지 특징을 가지고 있는데요.

 

1) 클래스명같은 이름으로 지정(여기선 School) 합니다.

2) public으로 정의 되어야 합니다.

3) return형식의 반환 형식사용할수 없습니다. 하지만 void를 붙히지 않은 형태로 적어줘야합니다.

(void를 모르시는 분은 해당 포스팅 참조)

4) 아래와 같이 매개변수 전달이 가능합니다.

 

2. 생성자(constructor)의 작동방식

 

생성자 함수클래스가 객체로 정의될때 자동으로 실행되는 함수입니다. 

School school = new School();

class School
{
    public School()
    {
        Console.WriteLine("공부합시다");
    }
}

//output: 공부합시다

위와 같이 따로 함수를 실행 시켜주지 않았는데도 불구하고, 클래스가 인스턴스화(객체) 되었을때 함수가 자동적으로 실행 된것을 알 수 있습니다.

 

3. 생성자(constructor)의 오버로딩

 

같은이름을 가진 여러개 생성자를 만들 수 있습니다.

물론 매개변수 이름이나 갯수등을 조정해서 미묘하게 다른 형태를 만들어 줘야 하지만요.

 

일반적으로 아래와 같이 여러개의 생성자를 만들어 줄 수 있습니다.

 

각각의 생성자 함수는 객체를 생성할때 매개변수를 어떻게 구성하느냐에 따라 거기에 걸맞는 생성자 함수가 실행 되게 됩니다.

 

1) 매개변수 name만 입력하는 경우

첫번째 함수가 실행됩니다.

Person p1 = new Person("david");

class Person
{

    public Person(string name)
    {
        Console.WriteLine($"이름 :{name}");
    }

    public Person(string name, int age)
    {
        Console.WriteLine($"이름 :{name} 나이 : {age}");
    }

    public Person(string name, int age, int height)
    {
        Console.WriteLine($"이름 :{name} 나이 : {age} 키 : {height}");
    }
}

//output : 이름 :david​

 

2) 매개변수 name, age 입력하는 경우

두번째 함수가 실행됩니다.

 

Person p2 = new Person("david", 18);

class Person
{

    public Person(string name)
    {
        Console.WriteLine($"이름 :{name}");
    }

    public Person(string name, int age)
    {
        Console.WriteLine($"이름 :{name} 나이 : {age}");
    }

    public Person(string name, int age, int height)
    {
        Console.WriteLine($"이름 :{name} 나이 : {age} 키 : {height}");
    }
}

//output: 이름 :david 나이 : 18

 

3) 매개변수 name, age, height 입력하는 경우

세번째 함수가 실행됩니다.

 

Person p3 = new Person("david", 18, 170);

class Person
{

    public Person(string name)
    {
        Console.WriteLine($"이름 :{name}");
    }

    public Person(string name, int age)
    {
        Console.WriteLine($"이름 :{name} 나이 : {age}");
    }

    public Person(string name, int age, int height)
    {
        Console.WriteLine($"이름 :{name} 나이 : {age} 키 : {height}");
    }
}

//output: 이름 :david 나이 : 18 키 : 170
  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오톡 공유하기
이 컨텐츠가 마음에 드셨다면 커피 한잔(후원) ☕

댓글