Unity Learn/주니어 프로그래머

6단원 - 프로젝트 최적화 : 접근 제한자

coding-potato 2024. 11. 26. 14:50

접근 제한자

클래스, 필드, 메서드, 속성 등 멤버들의 접근 범위를 제어하는 데 사용됩니다. 이를 통해 코드의 캡슐화를 구현하고, 외부에서의 불필요한 접근을 방지하며, 코드의 안정성과 보안성을 높일 수 있습니다.

값 변경 제약

변수, 필드, 속성 등에 대해 값이 변경될 수 있는 범위와 조건을 제한하는 데 사용됩니다. 이를 통해 데이터의 일관성을 유지하고, 불필요하거나 잘못된 변경을 방지할 수 있습니다. Unity에서도 이러한 제약은 코드 안정성을 높이는 데 중요하게 사용됩니다.

 

접근 제한자

public 모두 접근 가능: Unity 인스펙터와 외부 클래스에서 접근 가능.
private 현재 클래스에서만 접근 가능: 기본 접근 수준이며, 외부 접근 불가.
protected 현재 클래스와 파생 클래스에서만 접근 가능.
internal 같은 어셈블리 내에서만 접근 가능: 다른 프로젝트에서 접근 불가.
protected internal 같은 어셈블리 또는 파생 클래스에서 접근 가능.
private protected 같은 어셈블리 내에서 파생 클래스에서만 접근 가능 (C# 7.2+).

 

값 변경 제약

const 컴파일 타임 상수: 선언 시 값 설정 필수, 이후 변경 불가.
readonly 런타임 상수: 선언 시 또는 생성자에서 값 설정 가능, 이후 변경 불가.
static 정적 필드/메서드: 클래스 레벨에서 동작하며, 모든 인스턴스가 값을 공유.
volatile 멀티스레드용 필드: 메모리의 값을 캐싱하지 않고 항상 읽고 씀.
sealed 클래스 상속 금지: 클래스나 메서드가 더 이상 확장되지 않음.
abstract 구현 강제: 클래스나 메서드가 반드시 파생 클래스에서 구현되어야 함.
virtual 재정의 가능: 메서드가 파생 클래스에서 재정의 가능.
override 재정의 구현: 부모 클래스의 virtual 메서드를 재정의.
async 비동기 메서드 선언: 메서드 내에 await를 사용할 수 있음.
extern 외부 구현 참조: 외부 코드나 DLL에서 구현된 메서드.

 

 

사용 예제