접근제어자(Access Modifier)
접근제어자는 변수나 메소드, 클래스에 대한 접근을 제어하는 문법이다.
접근을 제어하는 이유는 객체가 가진 고유의 멤버 변수값들이 외부에서 잘못 변경되는 것을 막기 위해서 이다.
자바에는 다음과 같은 접근제어자가 있다.
- private
- default
- protected
- public
private
접근제어자가 private 으로 설정 되어 있다면 그 변수나 메소드는 해당 클래스에만 접근이 가능하다.
최상위 클래스 선언에서는 private를 사용할 수 없다.
default
접근제어자를 별도로 설정하지 않는다면 default 접근제어자가 된다. default 접근제어자는 해당 패키지 내에서 접근이 가능하다.
protected
protected 접근제어자는 default 접근제어자와 마찬가지로 동일 패키지내에서 접근이 가능하며 추가적으로 해당 클래스를 상속받은 외부 패키지의 클래스에서도 접근이 가능하다.
public
public 접근제어자는 모든 클래스에 의해 접근할 수 있다. 즉 접근 제약이 없다.
접근 권한
종류 | 클래스 | 하위클래스 | 동일패키지 | 모든클래스 |
---|---|---|---|---|
private | O | X | X | X |
default | O | X | O | X |
protected | O | O | O | X |
public | O | O | O | O |
public > protected > default > private
꿀팁
메소드를 오버라이딩 할 경우 부모 클래스의 메소드의 접근제어자보다 좁아질 수는 없다.
그러나 확장될 수는 있다.
private 로 선언된 메소드를 public 으로 오버라이딩하여 모든곳에서 접근 가능하도록 수정이 가능하다.