Game Development, 게임개발/개발

C#, Unity에서의 접근제한자,Access modifier [Unity]

게임이 더 좋아 2021. 3. 11. 05:47
반응형
728x170

물론 C#을 이용하는 사람이 모두 Unity를 쓰는 것은 아니겠지만..

난 Unity를 기준으로 설명하겠다. 어차피 C#도 똑같다.

 

 

 


 

 

종류는 4가지가 있다.

 

private

클래스 내부에서만 접근이 가능.

즉, 동일 클래스나 구조체 내의 멤버만 접근 가능하다.

 

 

public

모든 곳에서 해당 멤버로 접근이 가능.

여기서 말하는 모든 곳은 inherit class를 포함한 정말 모든 외부를 말한다.

 

internal

같은 어셈블리에서만 접근이 가능. 


protected

클래스 외부에서 접근할 수 없으나 파생 클래스에서는 접근이 가능.

public + private이라고 보면 된다. 약간 mixed 되어 있다.

 

++ protected internal( 결합)

같은 어셈블리에서만 protected으로 접근이 가능. 


 


근데 여기서 헷갈리게 하는 놈들이 있다. 접근 제한자는 위에 것이 다지만

Static이 붙어있어 헷갈리는 놈들

 

 

static public

이건 객체를 통해 접근하는 것이 아니라 직접 접근하는 것이다.

해당스크립트이름. 해당변수  or 해당변수

위와 같은 방식으로 바로 접근이 가능하다.

즉, 해당 스크립트의 해당 변수에 직접 접근이고 누가 접근하든 같은 변수에 접근하게 된다.

 

 

static private

이건 해당 스크립트에 대한 객체가 모두 공유한다는 뜻이다.

하지만 다른 클래스에서는 접근이 불가능하다.

 


 

 

클래스의 멤버들은  위 5가지 접근제한자를 다 사용할 수 있다.

다만 구조체 멤버 같은 경우 상속이 되지 않아서 얘는 public, internal private만 가질 수 있다.

 

사실 Encapsulation, Hiding을 지향해야 하므로 불필요하게 public을 남발하지 않는 것이 좋다.

근데 뭐... 각자 잘 짜면 되는 거다.

 

728x90
반응형
그리드형