본문 바로가기

내배켐 Unity TIL

Unity 9일차 TIL - Class

Class는 Fields와 Methods를 하나로 묶은 사용자 정의 타입이다.

즉 기존에 사용하던 int, float, double 등의 자료형과 같은 느낌이다.

특징으로는 참조 형식이며, 단일 상속 및 다중 상속이 가능하다.

 

class Unit
{
    // Fields
    private string name;
    private int level;

    // Methods
    public void PrintInfo()
    {
        Console.WriteLine($"Name: {name}, Level: {level}");
    }
    
    // 매개변수가 없는 디폴트 생성자
    public Unit()
    {
        name = "Unknown";
        level = 0;
    }
    
    // 매개변수를 받는 생성자
    public Unit(string newName, int newLevel)
    {
        name = newName;
        level = newLevel;
    }
}

static void Main(string[] args)
{
    Unit unit1 = new Unit(); // Unit 클래스의 인스턴스 생성 
    Unit unit2 = new Unit("AA", 10);
    unit1.PrintInfo(); // 출력 : Name: Unknown, Level: 0
    unit2.PrintInfo(); // 출력 : Name: AA, Level: 10
}

위 예시처럼 Class 안에 있는 데이터들과 함수들을 사용할 수 있다.

 

그렇기에 보통 Fields는 private 접근 제한자를 사용하여 외부에서 직접적인 접근을 제한하고, 필요한 경우에는 Property를 통해 간접적으로 접근한다.

 

Property란 클래스 멤버로서, 객체의 필드 값을 읽거나 설정하는 데 사용되는 접근자 메서드의 조합이다.

[접근 제한자] [데이터 타입] 프로퍼티명
{
    get
    {
        // 필드를 반환하거나 다른 로직 수행
    }
    set
    {
        // 필드에 값을 설정하거나 다른 로직 수행
    }
}

공부하면서 예제를 보니 보통 자동 프로퍼티라고 하는 형식으로 사용하는 것 같다.

자동 프로퍼티 형식 : [접근 제한자] [데이터 타입] 프로퍼티명 { get; set;}

 

개념만 들었을 때는 간단하게 이해할 수 있을 것 같은데 막상 응용해서 코딩을 해보려고 하니 머리가 아파진다.

꼬리에 꼬리를 물면서 계속 연결되는 class 시간이 조금 지난 뒤 어느 정도 익숙해졌을 때 다시 공부해 봐야 될 것 같다.