Java Access Modifier
접근 제어자의 종류
- public : 접근에 제한이 없음
- private : 자기 자신 클래스 내에서만 접근 가능
- default : 동일한 패키지 내에서만 접근 가능
- protected : 동일한 패키지 내에서만 접근 가능 + 상속을 이용한 접근 가능
접근 제어자를 이용한 캡슐화
- 접근 제어자를 사용하는 이유는 클래스의 내부에 선언된 데이터를 보호하기 위해서이다. 데이터가 유효한 값을 유지하도록 또는 비밀번호와 같은 데이터를 외부에서 함부로 변경하지 못하도록 하기 위해서는 외부로부터의 접근을 제한하는 것이 필요하다
- 이것을 데이터 감추기라고 하며 객체지향개념에선 캡슐화(encapsulation)이라 한다.
- 제어자의 조합
- 대상에 따라 사용할 수 있는 제어자
| 대상 | 사용가능한 접근 제어자 |
|---|---|
| 클래스 | public, (default), final, abstract |
| 메서드 | 모든 접근제어자, final, abstract, static |
| 멤버변수 | 모든 접근제어자, final, static |
| 지역변수 | final |
- 제어자 조합해서 사용할 때 주의할 사항
- 메서드에
static과abstract를 함께 사용할 수 없다 :static메서드는 몸통이 있는 메서드에만 사용할 수 있기 때문 - 클래스에
abstract와final을 동시에 사용할 수 없다 :클래스에 사용되는final은 클래스를 확장할 수 없다는 의미이고,abstract는 상속을 통해서 완성되어야 한다는 의미이므로 서로 모순되기 때문이다. abstract메서드의 접근 제어자가 private일 수 없다 :abstract메서드는 자손클래스에서 구현하기 위해 접근해야 하기 때문이다.- 메서드에 private와
final을 같이 사용할 필요는 없다 : 접근 제어자가 private인 메서드는 오버라이딩될 수 없기 때문이다. 이 둘 중 하나만 사용해도 의미가 충분하다.