본문 바로가기
유니티

Day 20 - C# (생성자 개념 및 사용)

by shin0707 2024. 5. 7.
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
반응형