728x90
- 주제
>>생성자(매개변수가 없는 생성자, 매개변수가 있는 생성자, base키워드)
1. 생성자
클래스 또는 구조체와 이름이 같다.
일반적으로 새 개체의 데이터 멤버를 초기화 하는 역할을 수행한다.
2. 매개변수가 없는 생성자
Taxi클래스를 인스턴스화하여 클래스 내 생성자를 사용한다.
(새로운 t 개체에 메모리가 할당됨 -> new연산자가 Taxi 생성자를 호출)
public class Taxi
{
public bool IsInitialized;
public Taxi() //생성자
{
IsInitialized = true;
}
}
class TestTaxi
{
static void Main()
{
Taxi t = new Taxi(); //Taxi클래스를 인스턴스화
Console.WriteLine(t.IsInitialized); //출력: true
}
}
3. 매개변수가 있는 생성자
클래스는 여러 생성자를 정의할 수 있다.
매개변수가 없는 생성자의 정의는 필요하지 않다.
public class Employee
{
public int Salary;
public Employee() { } //매개변수가 없는 생성자
public Employee(int annualSalary) //매개변수가 있는 생성자
{
Salary = annualSalary;
}
public Employee(int weeklySalary, int numberOfWeeks) //매개변수가 있는 생성자
{
Salary = weeklySalary * numberOfWeeks;
}
}
class TestEmployee
{
static void Main()
{
Employee e1 = new Employee(30000); //Employee클래스를 인스턴스화
Employee e2 = new Employee(500, 52); //Employee클래스를 인스턴스화
Console.WriteLine(e1.Salary); //출력: 30000
Console.WriteLine(e2.Salary); //출력: 500*52 = 26000
}
}
4. 생성자와 base키워드
생성자는 base키워드를 사용하여 기본 클래스의 생성자를 호출할 수 있다.
base키워드는 매개 변수와 함께 또는 매개 변수 없이 사용 가능하다.
public class Manager : Employee //Manager클래스에 Employee 상속
{
public Manager(int annualSalary) //Manager클래스 생성자 : base()
: base(annualSalary)
{
//Add further instructions here.
}
}
파생클래스에서 base키워드를 사용하여 생성자를 명시적으로 호출하지 않은 때,
매개 변수가 없는 생성자가 상위클래스에 존재하면 암시적으로 호출된다.
public Manager(int initialData) //base키워드를 사용하지 않은 예
{
//Add further instructions here.
}
//위아래 생성자 선언은 사실상 동일하다.
public Manager(int initialData) //base키워드를 사용했지만, 명시적으로 호출하지 않은 때,
: base()
{
//Add further instructions here.
}
728x90
반응형
'유니티' 카테고리의 다른 글
Day 22 - 탑뷰게임 만들기(플레이어를 따라가는 카메라) (0) | 2024.05.09 |
---|---|
Day 21 - C# (Nullable, StringBuilder) (0) | 2024.05.08 |
Day 19 - C# (Random 클래스) (0) | 2024.05.04 |
Day 18 - C# (얇은 복사, 깊은 복사, ICloneable) (0) | 2024.05.03 |
Day 17 - C#(Func & Action, Where문) (0) | 2024.05.02 |