[Java]접근제어자(Access Modifier)
접근제어자
- 접근제어자는 멤버 또는 클래스에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못 하도록 제한하는 역할을 한다.
- 접근제어자는 클래스, 멤버변수, 메서드, 생성자에서 사용될 수 있다.
1. 접근 제어자를 사용하는 이유
- 접근제어자를 사용하는 이유는 클래스의 내부에 선언된 데이터를 보호하기 위해서다.
- 데이터가 유효한 값을 유지하도록 또는 비밀번호와 같은 데이터를 외부에서 함부로 변경하지 못하도록 하기 위해서는 외부로부터의 접근을 제한하는 것이 필요하다.
- 객체지향개념에서 이것을 캡슐화(encapsulation)라고 한다.
2. 접근제어자자의 종류
- Java에는 4가지 접근제어자가 존재한다.
private
, default
, protected
, public
- private
: 같은 클래스 내에서만 접근 허용
- default
: 같은 패키지 내에서만 접근 허용 (접근제어자 생략 시 default
로 적용)
- protected
: 같은 패키지 내에서, 다른 패키지의 자손 클래스에서 접근 허용
- public
: 접근 제한이 없다.
종류 | 같은 클래스 | 같은 패키지 | 하위 클래스 | 모든 클래스 |
---|
private | O | X | X | X |
default | O | O | X | X |
protected | O | O | O | X |
public | O | O | O | O |
private
→default
→protected
→public
순으로 많은 접근을 허용
public
- 접근제어자가
public
으로 설정되었으면 모든 클래스 접근이 가능하다. 즉, 접근 제약이 없다.
default
- 접근제어자를 별도로 설정하지 않는다면
default
접근제어자가 되고 해당 패키지에서만 접근이 가능하다.
protected
- 접근제어자가
protected
로 설정되었으면 같은 패키지내의 클래스 또는 해당 클래스를 상속받은 외부 패키지의 클래스에서 접근이 가능하다.
private
- 접근제어자가
private
로 설정되었으면 같은 클래스에서만 접근이 가능하다.
3. 접근제어자 사용 범위
대상 | 사용가능한 접근제어자 |
---|
클래스 | public , default |
메서드 | 모든 접근제어자 |
멤버변수 | 모든 접근제어자 |
지역변수 | 사용 불가 |
참고사이트