1. 접근 제한자
: 자바에서는 접근 제한자를 설정하여 해당 클래스(혹은 메소드 등)의 사용 권한을 설정할 수 있다.
예로 자바 메인 메소드를 살펴보면,
// 자바 메인 메소드
public static void main(String[] args) {
/*
public = 공개되는 ( 어디서나 접근이 가능한 ) 메소드라는 뜻
static = 정적 메소드 선언
void = return 값이 없음
*/
}
위와 같이 메인 메소드는 외부에서도 사용할 수 있도록 public으로 선언된 걸 알 수있다.
접근 제한자를 사용하는 목적으로는 무분별한 클래스 호출을 막으면서 해당 멤버나 데이터를 보호하는 것에 있다.
2. 각 키워드에 따른 접근제한
위 그림과 같이 자바의 접근 제한자로는 public, protected, default, private가 있다.
최상위 집합으로 볼 수 있는 public은 외부에서 자유롭게 사용할 수 있도록 공개되는 멤버를 만들고, 하위 접근 제한자로 갈 수록 접근 가능한 멤버들이 줄어든다.
public
: 클래스, 필드, 생성자, 메소드에 적용이 가능하고, public으로 선언된 멤버는 외부 클래스에서 자유롭게 접근할 수 있다.
예 ) 라이브러리 클래스
protected
: 필드, 생성자, 메소드에 적용이 가능하고, 같은 패키지나 자식 클래스에서만 접근 할 수 있다.
private
: 필드, 생성자, 메소드에 적용이 가능하고, 선언된 클래스 내부에서만 접근이 가능하다.
default
: 클래스, 필드, 생성자, 메소드에 적용이 가능하고, 같은 패키지에서만 접근할 수 있다.
위 세가지 접근 제한자 (public, protected, private)로 지정되지 않으면 자동으로 default로 선언된다.
클래스의 접근 제한자
클래스에서는 public과 default 접근제한자만 사용이 가능하다.
해당 위치에서 접근 불가능한 클래스를 호출하려 하면 컴파일 에러가 뜬다.
생성자의 접근 제한자
생성자는 public , protected, default, private 접근 제한자를 사용가능하다.
생성자의 기본 접근제한자는 클래스의 접근제한자를 사용하게 된다.