생성자(Constructor)는 클래스의 특별한 멤버 함수로, 해당 클래스의 새로운 객체를 생성할 때마다 자동으로 실행됩니다. 생성자는 객체가 메모리에 만들어지는 순간 필요한 초기화 작업을 수행하는 역할을 담당합니다.
기본 생성자(Default Constructor)는 이름 그대로 매개변수가 하나도 없는 생성자를 의미합니다. 클래스에 생성자를 직접 정의하지 않으면, C# 컴파일러가 자동으로 아무 작업도 수행하지 않는 기본 생성자를 만들어 줍니다.
C# 생성자 예제
다음 예제는 C#에서 생성자를 활용하는 방법을 보여줍니다. 이 예제에서는 길이 값을 인수로 받아 객체를 초기화하는 매개변수가 있는 생성자(Parameterized Constructor)를 사용했습니다.
예제 코드
using System;
namespace LineApplication {
class Line {
private double length; // 선의 길이
public Line(double len) { // 매개변수가 있는 생성자
Console.WriteLine("Object is being created, length = {0}", len);
length = len;
}
public void setLength(double len) {
length = len;
}
public double getLength() {
return length;
}
static void Main(string[] args) {
Line line = new Line(10.0);
Console.WriteLine("Length of line : {0}", line.getLength());
// 선 길이 설정
line.setLength(6.0);
Console.WriteLine("Length of line : {0}", line.getLength());
Console.ReadKey();
}
}
}실행 결과
Object is being created, length = 10 Length of line : 10 Length of line : 6
코드 설명
- Line(double len) : 객체 생성 시점에 호출되며, 전달받은 값으로 length 필드를 초기화합니다.
- setLength() : 이미 생성된 객체의 길이 값을 변경합니다.
- getLength() : 현재 저장된 길이 값을 반환합니다.
기본 생성자 직접 정의하기
매개변수 없이 객체를 생성하고 싶다면 다음과 같이 기본 생성자를 직접 정의할 수 있습니다.
public Line() {
Console.WriteLine("기본 생성자가 호출되었습니다.");
length = 0;
}이렇게 정의해 두면 new Line()처럼 인수 없이 객체를 생성할 수 있으며, 이때 기본 생성자가 실행됩니다. 단, 매개변수가 있는 생성자를 이미 정의한 경우에는 컴파일러가 기본 생성자를 자동으로 만들어 주지 않으므로, 필요하다면 반드시 직접 작성해야 합니다.
정리
생성자는 클래스 이름과 동일하고 반환 타입이 없으며, 객체 생성 시점에 자동으로 호출된다는 것이 가장 큰 특징입니다. 기본 생성자는 매개변수가 없는 생성자로, 별도로 정의하지 않으면 컴파일러가 자동으로 제공한다는 점을 기억해 두면 좋습니다.