Unity 기초_5 (클래스, 필드, 속성)

김펭귄·2025년 1월 17일

Unity 기초

목록 보기
7/9

Class

  • Unity에선 하나의 script에 하나의 class만 존재 (Actor class, Player class)

클래스 선언

public class Actor 		// 누구나 사용 가능한(public) Actor 클래스 선언
{
    public int level;	// 인스턴스 시 사용 가능한 필드
    
    public int LevelUp(int add_level)	// 메서드
    {
        return add_level + level;
    }							// 클래스의 필드, 속성, 메서드 및 이벤트를 모두 클래스 멤버
}
  • public class 클래스_이름을 통해 선언
  • public 을 써줌으로써 누구나 이 클래스의 인스턴스를 만들 수 있다
  • 클래스 안에 정의되는 필드, 속성, 메서드(함수) 등을 클래스 멤버라고 함

개체 만들기

  • 클래스를 이용해 개체를 만든다(인스턴스화)
Actor person1 = new Actor();	// 인스턴스화
person1.level = 10;				// 필드 값 수정
Debug.Log(person1.level);		// 필드 값 읽기		
Debug.Log(person1.LevelUp(5));		// 메서드 호출

Field vs Property

필드(Field)

  • 클래스나 구조체에 속한 변수
  • 인스턴스의 상태(데이터)를 직접적으로 저장
public class Actor 	
{
	public int level = 1;	// 공개 필드
    private float exp;	// 비공개 필드
    string name = "Kim";		// 기본형 역시 비공개 필드
}
  • public Type 변수는 어떤 클래스든 이 필드를 사용 가능
  • private Type 변수는 해당 변수가 선언된 클래스 내에서만 사용 가능(접근 제한)
  • public private 둘 다 메서드에도 동일하게 사용

속성(Property)

  • 외부에서 private 필드에 접근하기 위한 장치 (public사용)
  • getset접근자를 이용해 필드의 값을 읽거나 변경 (get/set은 다음 장에서 자세히)
  • 간접적인 데이터 관리
public class Person
{
	private int _age; // 필드: _age에 대해 외부에서 직접 접근 불가

    // 속성Age를 통해 _age 필드에 간접적으로 접근가능
    public int Age
    {
        get { return _age; } 	// get 통해 값을 읽음
        set 			 	 	// set 통해 값을 저장
        { 
            if (value > 0) // 유효성 검사. 양수일 때만 저장 허용
            {
                _age = value; 
            }
        }
    }
}
  • 속성 사용 이유
    1. 데이터 보호 : 외부에서 속성을 통해 데이터에 접근하므로, 필드값의 직접 수정을 막아 보호
    2. 유효성 검사 : 데이터를 저장하거나 읽을 때, 값이 유효한지 검사 가능
    3. 캡슐화 : 내부 구현을 숨기고, 필요한 기능만 노출

자동 구현 속성

  • 필드처럼 기본적인 접근만 필요한 경우에 사용
  • 컴파일러가 자동으로 필드를 생성하고 관리
  • 코드 간결
public class Person
{
    public int Age {get; set;}	// 자동 구현 property
}

public class Program
{
    static void Main()
    {
        Person person = new Person();
        person.Age = 10;    // 값 저장
        Debug.Log(person.Age); // 값 읽기. 출력: 10
    }
}
  • Age는 별도의 필드 없이도, 자동으로 private 필드가 생성되고 값이 저장됨

무엇을 사용할까?

  • 프로그램이 가벼우면 필드를 사용해도 문제 없으나, 코드가 복잡해지고 프로그램이 무거워지면 유연성과 객체 무결성 등을 보장해주는 속성을 사용하는 것이 좋다.

Reference

Microsoft | 클래스 소개
C# 필드(Field) vs. 프로퍼티(Property) 차이 비교 by 꼬예

profile
반갑습니다

0개의 댓글