물론 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을 남발하지 않는 것이 좋다.
근데 뭐... 각자 잘 짜면 되는 거다.
'Game Development, 게임개발 > 개발' 카테고리의 다른 글
용어 정리 (0) | 2021.03.14 |
---|---|
AddForce에 대한 모든 것(+RelativeForce) [Unity] (2) | 2021.03.14 |
게임 제작 과정에서 한 번쯤 생각해야 할 체크리스트 (0) | 2021.03.05 |
Physics Material에 대한 것 [Unity] (0) | 2021.03.02 |
시점에 따라 좌표축 바꾸기, Local Coordinates [Unity] (0) | 2021.03.01 |