C#에서 생성자는 클래스나 구조체가 인스턴스화될 때 자동으로 호출되는 특별한 메서드이다. 생성자의 주요 목적은 객체를 초기화하는 것으로, 필드 또는 속성에 초기 값을 할당하는 등의 작업을 수행할 수 있다. 생성자는 클래스 또는 구조체의 이름과 동일하며, 반환 형식을 지정하지 않는다. 생성자는 객체 지향 프로그래밍에서 중요한 역할을 하며, 클래스의 인스턴스가 올바르게 초기화되어 사용될 수 있도록 보장한다.
기본 생성자
기본 생성자(Default Constructor)는 매개변수를 받지 않는 생성자이다. 사용자가 명시적으로 생성자를 정의하지 않으면, C# 컴파일러는 기본 생성자를 자동으로 제공한다. 그러나 사용자가 어떠한 생성자라도 정의하면, 컴파일러는 기본 생성자를 자동으로 제공하지 않는다.
public class MyClass
{
public MyClass()
{
// 기본 생성자 본문
}
}
매개변수가 있는 생성자
하나 이상의 매개변수를 받아들여 객체를 초기화하는 데 사용할 수 있다. 이를 통해 객체 생성 시 초기 값들을 전달할 수 있다.
public class MyClass
{
public int Number;
public MyClass(int number)
{
this.Number = number; // 매개변수를 통해 필드 초기화
}
}
생성자 오버로딩
C#에서는 생성자 오버로딩을 지원한다. 이는 같은 이름의 생성자를 여러 개 정의할 수 있으나, 매개변수의 타입, 개수, 또는 순서가 달라야 한다는 것을 의미한다.
public class MyClass
{
public MyClass()
{
// 기본 생성자
}
public MyClass(int number)
{
// 정수 매개변수가 있는 생성자
}
public MyClass(string message)
{
// 문자열 매개변수가 있는 생성자
}
}
생성자에서의 this 키워드
this 키워드를 사용하여 클래스의 현재 인스턴스에 접근할 수 있으며, 다른 생성자를 호출하는 데에도 사용할 수 있다.
public class MyClass
{
public MyClass() : this(0) // 다른 생성자 호출
{
}
public MyClass(int number)
{
// 매개변수가 있는 생성자 본문
}
}
정적 생성자
정적 생성자는 클래스에 대해 단 한번만 호출되며, 클래스의 정적 멤버를 초기화하는데 사용된다. 정적 생성자는 매개변수를 가질 수 없으며, 접근 제한자도 가질 수 없다.
public class MyClass
{
static MyClass()
{
// 정적 생성자 본문
}
}
생성자 예시
public class BankAccount
{
public string Owner { get; private set; }
public decimal Balance { get; private set; }
// 기본 생성자
public BankAccount()
{
Owner = "Unknown";
Balance = 0;
}
// 매개변수가 있는 생성자
public BankAccount(string owner, decimal initialBalance)
{
Owner = owner;
Balance = initialBalance;
}
// 입금 메서드
public void Deposit(decimal amount)
{
Balance += amount;
}
// 출금 메서드
public void Withdraw(decimal amount)
{
if (amount <= Balance)
{
Balance -= amount;
}
else
{
Console.WriteLine("잔액이 부족합니다.");
}
}
}
기본 생성자 사용: 매개변수 없이 BankAccount 객체를 생성할 때 기본 생성자가 호출됩니다. 이 경우, 계좌의 소유자는 UnKnown으로, 잔액은 0으로 초기화됩니다.
var account1 = new BankAccount();
Console.WriteLine($"소유자: {account1.Owner}, 잔액: {account1.Balance}");
매개변수가 있는 생성자 사용: 계좌의 소유자 이름과 초기 잔액을 설정하고 싶을 때 매개변수가 있는 생성자를 사용합니다.
var account2 = new BankAccount("Jane Doe", 1000);
Console.WriteLine($"소유자: {account2.Owner}, 잔액: {account2.Balance}");
'C# 기초 프로그래밍 > C# Basic' 카테고리의 다른 글
[C# Basics] 재귀 함수 (0) | 2024.06.11 |
---|---|
[C# Basics] 다형성 (polymorphism) - OOP의 핵심 개념 (0) | 2024.04.15 |
[C# Basics] 캡슐화 / 은닉성 - OOP 의 핵심 개념(객체 지향 프로그래밍) (0) | 2024.04.12 |
[C# Basics] 객체지향 OOP란 무엇인가? - 핵심 4개념과 개론 (0) | 2024.04.12 |
[C# Basics] 스택과 힙 정리 - feat.복사와 참조, value, reference (0) | 2024.04.01 |
<C# Basics> 복사와 참조 (struct, class의 차이, 깊은 복사) (0) | 2023.12.23 |
<C# Basics> ref, out 키워드 (0) | 2023.12.11 |
<C# Basics> 함수/메서드 (2) | 2023.12.11 |