접근 제어자는 객체 지향 프로그래밍에서 클래스의 멤버(변수, 메서드)에 대한 접근 권한을 제어하기 위해 사용되는 키워드입니다. 다른 프로그래머들이 클래스의 멤버를 사용하는 방법과 범위를 결정할 수 있도록 도와줍니다.
Java를 기준으로 설명하면, 다음과 같은 네 가지 접근 제어자가 있습니다.
- public: 가장 넓은 범위의 접근 제어자로, 해당 멤버는 어디서든 접근할 수 있습니다. 다른 클래스에서도 접근이 가능합니다.
- private: 가장 좁은 범위의 접근 제어자로, 해당 멤버는 동일한 클래스 내에서만 접근할 수 있습니다. 다른 클래스에서는 직접 접근할 수 없고, 해당 클래스의 메서드를 통해 간접적으로 접근해야 합니다.
- protected: 해당 멤버는 동일한 패키지 내의 클래스와 상속 관계에 있는 하위 클래스에서 접근할 수 있습니다. 다른 패키지의 클래스에서는 접근할 수 없습니다.
- default (package-private): 접근 제어자를 명시하지 않은 경우, 기본적으로 적용되는 접근 제어자입니다. 해당 멤버는 동일한 패키지 내의 클래스에서만 접근할 수 있으며, 다른 패키지에서는 접근할 수 없습니다.
이러한 접근 제어자를 사용하여 클래스의 멤버에 대한 캡슐화를 구현하고, 객체 지향 프로그래밍의 중요한 개념인 정보 은닉과 모듈화를 실현할 수 있습니다.