접근제한자란 무엇이며, 각각 어떤 차이가 있는지 비교해서 설명해주세요.
한 줄 요약
접근제한자 : 클래스 요소에 대한 접근 권한을 설정하는 문법 요소.
캡슐화 : 데이터 필드와 그를 사용하는 메서드를 묶어 관리하는 것. 외부에서는 메서드를 통해 해당 데이터에 접근. 외부에서의 의도하지 않은 변경으로부터 보호
접근제한자
- 클래스 내부에 변수 또는 함수를 선언할 때, 클래스의 내부 또는 외부에서 해당 변수에 접근하여 값을 확인하거나, 변경 또는 호출 및 참조를 가능하게 할지 여부를 표시하는 문법 요소
- 그러나 클래스, 구조체, 인터페이스, 열거형에도 사용할 수 있음
- 외부에서 내부의 요소에 접근하는 것을 막아 안정성과 유지보수성을 높일 수 있음
1. Private
- 접근 제한자에서 가장 제한적인 접근 제한자
- 해당 변수가 선언된 클래스 내에서만 접근, 수정이 가능하도록 함
- 접근 제한자를 사용하지 않았을 때 기본으로 사용됨
2. Public
- 접근 제한자에서 가장 제한이 없는 접근 제한자
- 외부 클래스에서 값을 확인하고 수정하는 것 그리고 호출하고 참조하는 것 모두 가능함
3. Protected
- 자기 자신과 해당 클래스를 상속받는 자식 클래스에서는 접근이 가능하지만, 그렇지 않은 클래스에서는 접근할 수 없도록 하는 접근 제한자
4. Internal
- 해당 어셈블리 내부에 있는 요소에 접근하는 것을 가능하게 함