C# 생성자란 무엇인가?
클래스 생성자(Constructor)는 해당 클래스의 객체가 새로 생성될 때마다 자동으로 실행되는 특수한 멤버 함수입니다. 객체가 메모리에 할당되는 순간 호출되기 때문에 초기화 작업을 처리하는 데 주로 활용됩니다.
생성자는 다음과 같은 중요한 특징을 가지고 있습니다.
- 생성자의 이름은 클래스 이름과 반드시 동일해야 합니다.
- 생성자는 반환 타입(return type)을 가지지 않으며, void조차 명시하지 않습니다.
- 객체를 new 키워드로 생성하는 순간 자동으로 호출됩니다.
생성자의 기본 문법
생성자는 클래스 이름과 똑같은 이름으로 정의합니다.
class Demo {
public Demo() {}
}생성자 동작 예제
다음 예제는 Line 클래스에서 객체가 생성될 때 생성자가 호출되는 과정을 보여줍니다.
using System;
namespace LineApplication {
class Line {
private double length; // 선의 길이
// 생성자: 객체 생성 시 자동으로 호출됩니다.
public Line() {
Console.WriteLine("객체가 생성되고 있습니다");
}
public void setLength(double len) {
length = len;
}
public double getLength() {
return length;
}
static void Main(string[] args) {
Line line = new Line(); // 이 순간 생성자가 호출됩니다.
// 선 길이 설정
line.setLength(6.0);
Console.WriteLine("선의 길이 : {0}", line.getLength());
Console.ReadKey();
}
}
}실행 결과
객체가 생성되고 있습니다 선의 길이 : 6
코드 분석
new Line() 문장이 실행되는 순간 매개변수 없는 기본 생성자(Default Constructor)가 호출되어 "객체가 생성되고 있습니다"라는 메시지가 먼저 출력됩니다. 이후 setLength() 메서드로 길이를 설정하고 getLength()로 값을 조회하면 6이 출력됩니다.
참고로 C#에서는 이처럼 매개변수가 없는 기본 생성자뿐만 아니라, 매개변수를 받아 필드를 초기화하는 매개변수 생성자(Parameterized Constructor)도 정의할 수 있으며, 하나의 클래스에 여러 개의 생성자를 오버로딩하여 상황에 맞게 사용할 수 있습니다.