C#에서 생성자(Constructor)에도 매개변수를 추가할 수 있습니다. 이렇게 매개변수를 받는 생성자를 매개변수화된 생성자(Parameterized Constructor)라고 부릅니다.
이 기법을 활용하면 객체가 생성되는 순간 원하는 초기값을 바로 할당할 수 있어, 별도의 설정 과정 없이 객체를 완전한 상태로 만들 수 있다는 장점이 있습니다.
매개변수화된 생성자의 기본 구조
먼저 간단한 클래스 정의부터 살펴보겠습니다.
// 클래스 선언 class Demo
다음은 rank라는 매개변수 하나를 받는 매개변수화된 생성자의 예입니다.
public Demo(int rank) {
Console.WriteLine("RANK = {0}", rank);
}전체 예제 코드
아래는 C#에서 매개변수화된 생성자를 실제로 어떻게 사용하는지 보여주는 완전한 예제입니다. Line 클래스는 객체 생성 시 길이 값을 전달받아 내부 필드를 초기화합니다.
using System;
namespace Demo {
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) {
// 생성자에 10.0을 전달하며 객체 생성
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
핵심 정리
- 매개변수화된 생성자는 객체 생성 시점에 인수를 전달받아 필드를 초기화합니다.
new Line(10.0)처럼new키워드와 함께 값을 전달하면, 생성자가 호출되면서length필드가 즉시 초기화됩니다.- 이후에는
setLength()메서드를 통해 값을 변경할 수도 있습니다. - 생성자에서 초기값을 할당하면 코드가 더 간결해지고, 잘못된 상태의 객체가 만들어질 가능성을 줄일 수 있습니다.