접근제어 지시자는 접근의 허용 범위를 제한하는 용도로 사용이 된다.
접근제어 지시자는 public private protected 세가지가있다. 아무런 선언도 하지않는경우까지포함하여
총 네가지의 접근제어 선언이 가능하다.접근제어자를 사용하는 이유는
마치 은행이 누구나 접근 할 수 있는 창구와 관계자외에는 출입이 엄격하게 통제되는 금고를 구분하고 있는 이유와 같다.
public
public으로 선언이되면 어디서든 접근가능한 인스턴스 변수 및 메서드가 된다.
private
외부에서 인스턴스변수에 직접 접근하는것을 차단한다.
private가 선언되면 해당변수가 선언된 클래스 외부에서는 접근이 불가능해진다.
private가 선언이되면 해당 메소드나 변수의 클래스가 접근할수있는 유일한 수단이 된다.
default
접근제어자를 선언하지 않는경우 이러한형태의 선언을 디폴트 선언 이라하며
default로 선언된 인스턴스변수 및 인스턴스메소드는 동일 패키지 내에서의 접근을 허용한다.
클래스가 디폴트일경우에 생성자도 디폴트생성자가 자동으로 선언되고
퍼블릭클래스일경우에 생상자도 퍼블릭생성자가 자동으로 선언된다.
protected
protected는 상속을 받는 클래스의 접근을 허용하는 지시자이다.
상속으로 인해 접근제어자가 protected로 선언된 변수는 상속된 클래스의 변수가되어
상속받는클래스는 상속하는 클래스의 변수에 접근이 가능해진다.
public | protected | default | private | |
같은 패키지, 같은 클래스 | 허용 | 허용 | 허용 | 허용 |
같은 패키지, 상속 관계 | 허용 | 허용 | 허용 | 불용 |
같은 패키지, 상속 관계 아님 | 허용 | 허용 | 허용 | 불용 |
다른 패키지, 상속 관계 | 허용 | 허용 | 불용 | 불용 |
다른 패키지, 상속 관계 아님 | 허용 | 불용 | 불용 | 불용 |