1. 접근제어자란?
- 접근 제어(access control)는 객체 지향 프로그래밍에서 클래스의 멤버(변수, 메서드)에
대한 외부로부터의 접근을 제어하는 개념이다. (객체 지향 프로그래밍의 핵심적인 부분이다.)
- 즉, 클래스, 멤버 변수, 메서드 등의 접근 가능성을 제어하는 것.
- 접근 제어자를 사용하여 클래스의 멤버 변수와 메서드의 접근 범위를 제어할 수 있다.
- 이를 통해 캡슐화를 구현하고, 외부에서 직접 접근하지 못하도록 보호 (정보은닉) 할 수 있다
- 코드의 유지 보수성과 재사용성을 향상시킬 수 있음
이러한 접근 제어 지시자를 통해 클래스의 멤버에 대한 접근을 제한함으로써 정보 은닉, 캡슐화, 보안 등의 프로그래밍 원칙을 지키고 안정성을 확보할 수 있다.
2. 접근제어자의 종류

[접근제어자 4가지 종류]
2-1. public (공개)
공용이라는 의미로 public 을 멤버 앞에 붙이면 누구나 자유롭게 접근 할 수 있다.
어떤 클래스에서든 접근할 가능하고 클래스 외부에서도 접근 가능하며,
다른 패키지에서도 접근 가능하다.
public class Example { public int publicVariable; public void publicMethod() { // 메서드 내용 } }
2-2. private (비공개)
전용이라는 의미로 private 를 붙이면 클래스 안에서만 접근이 가능한 멤버가 된다.
동일한 클래스 내에서만 접근할 수 있고 다른 클래스에서는 접근할 수 없다.
public class Example { private int privateVariable; private void privateMethod() { // 메서드 내용 } }
주민등록번호와 같은 민감한 정보들에게 private를 사용한다.
접근 제어자 | 해당 클래스 안 | 패키지 | 자식 클래스 | 전체 |
public | O | O | O | O |
protected | O | O | O | X |
없음 (default) | O | O | X | X |
private | O | X | X | X |
ㅤ | ㅤ | ㅤ | ㅤ | ㅤ |
2-3. protected (보호)
protected 붙이면 멤버는 부모 클래스와 자식 클래스만이 접근할 수 있다.
같은 패키지 내에서는 접근할 수 있으며, 상속 관계 접근 가능
하위 클래스에서 접근 가능 = 상속 관계에 있는 클래스들 사이에서의 접근 가능성
public class Example { protected int protectedVariable; protected void protectedMethod() { // 메서드 내용 } }
2-4. default (아무 지정 없음)
해당 패키지 내에서만 접근할 수 있습니다.
접근 제어 지시자를 명시하지 않으면 기본(default)으로 설정된다.
패키지는 서로 관련된 클래스들은 하나로 묶은 것이다.
class Example { int defaultVariable; void defaultMethod() { // 메서드 내용 } }
필드는 특별한 이유가 있는게 아니면 무조건 private
(상수를 제외하고는 필드에 public 사용 XXX)
Share article