C# 프로그래밍 - 접근제한자
접근제한자는 클래스나 함수 앞에 붙여서 사용자 입장에서 접근을 제한할 수 있는 기능을 가진 키워드입니다. 종류로는 public, private, protected, internal 이 있는데요. 그렇다면 각각 어떤 의미가 있고, 어떻게 사용되는지 알아보도록 하겠습니다.
![img.png](https://blog.kakaocdn.net/dn/ci1LXf/btqCDkgI9nB/iFok3QFd9MU51inwzCP05K/img.png)
1. public
public은 공공의라는 뜻으로 모든 곳에서 접근할 수 있는 접근제한자입니다.
![img.png](https://blog.kakaocdn.net/dn/CV8eH/btqCFxGqobH/K6NVhDIoY4QWDTM9w7YPjK/img.png)
Phone 이라는 클래스가 있고, 내부에 number라는 변수가 있습니다. 이런 경우 모든 프로젝트에서 Phone 이라는 클래스를 접근할 수 있고, number라는 변수도 접근이 가능합니다.
2. private
private은 은밀한이라는 뜻으로 같은 클래스안에서만 접근할 수 있는 접근제한자입니다.
![img.png](https://blog.kakaocdn.net/dn/cFkjEL/btqCEN3QTBZ/ZdeNMXQRSdLqXPSPQcFBxK/img.png)
위에서 작성한 Phone 이라는 클래스에 number 라는 변수가 있었느데요. 이것을 private으로 바꾼 경우 외부에서 number로 접근할 수 없습니다.
![img.png](https://blog.kakaocdn.net/dn/brFdv3/btqCz5dJvX1/w8JgibK5uWMfg8bbPUHIT1/img.png)
이런식으로 외부에서 Phone이라는 클래스를 선언하여도 number에 접근할 수 없게 됩니다. 클래스 내부에서만 사용하고 외부에서는 접근을 못하게 할 경우에는 private을 사용합니다.
3. protected
protected는 보호된이라는 뜻으로 private과 매우 비슷하지만, 상속 받은 클래스의 경우 접근이 가능한 접근제한자입니다.
![img.png](https://blog.kakaocdn.net/dn/cAJEHh/btqCzA59NtP/rMC9CVJeGFCb9YlxBY4eu0/img.png)
Phone 이라는 클래스에 protected 로 접근제한된 number라는 변수가 있습니다. 이 경우 IPhone 이라는 클래스 내부에서는 number를 접근할 수 있지만, 외부에서는 접근이 불가능합니다.
![img.png](https://blog.kakaocdn.net/dn/lq0XI/btqCzALZ3dk/tY7fdvbwwVEx4iw7sqcvFk/img.png)
IPhone 이라는 클래스에서는 number를 수정하거나 가져올 수 있지만, 외부에서는 에러가 나는 것을 볼 수 있습니다.
4. internal
internal은 내부의라는 뜻으로 같은 프로젝트 내부에서는 public 처럼 사용이 가능하지만, 다른 프로젝트에서는 접근할 수 없는 접근자입니다.
접근제한자를 사용하는 것을 습관화하면 좋은데요. 별거 아닌 것 같아보일 수 있지만, 구조가 복잡한 프로그램을 만들고, 여러 사람이 함께 작업을 하게 되면 접근제한자를 적절하게 배치하는 것은 매우 중요합니다. 코드를 봐도 어떤 의도로 만들었는지 어느정도 알 수 있기 때문입니다.