본문 바로가기

카테고리 없음

JAVA 접근 제한자 ( PUBLIC, PRIVATE, PROTECTED, DEFAULT)

접근 제한자란?

Access Modifier

클래스나 변수, 메서드의 접근을 제어하기 위해 적어주는 예약어다.

 

접근 제한자 정의 적용하는 곳 접근할 수 없는 클래스
PUBLIC 모든 접근을 허용 클래스, 필드, 생성자, 메소드 없음
PROTECTED 같은 패키지안에 있는 객체와 상속관계의 객체들만 허용 필드, 생성자, 메소드 자식 클래스가 아닌 다른 패키지에 소속된 클래스
DEFAULT 같은 패키지에 있는 객체들만 허용 클래스, 필드, 생성자, 메소드 다른 패키지에 소속된 클래스
PRIVATE 현재 객체 내에서만 허용 필드, 생성자, 메소드 모든 외부 클래스

1. PUBLIC

모든 접근을 허용한다. 패키지, 클래스가 동일하지 않아도 모든 접근이 가능하다.

같은 클래스 내, 같은 패키지 내의 다른 클래스, 다른 패키지의 다른 클래스에서 허용된다.

 

2. PRIVATE

현재 객체 내에서만 허용한다.

동일 패키지, 다른 패키지 모두 접근이 불가능하고 같은 클래스 내에서만 접근을 허용한다.

같은 자바 파일 안의 서로 다른 클래스라도 접근 불가하다.

 

3. PROTECTED

같은 패키지안에 있는 객체와 상속관계의 객체들만 허용한다.

다른 패키지에서 접근하려면 해당 클래스를 상속받을 시에만 접근이 가능하다.

같은 클래스 내, 같은 패키지의 다른 클래스에서 접근, 다른 패키지의 상속받은 클래스 접근을 허용한다.

다른 패키지의 다른 클래스는 접근 불가.

 

4. DEFAULT

같은 패키지에 있는 객체들만 허용한다.

접근 제한자가 생략되어 있을 경우에 기본적으로 default 접근 제한자가 적용된다.

같은 클래스 내, 같은 패키지 내의 다른 클래스 접근을 허용한다.

다른 패키지에서 접근이 불가하다.

default는 자동으로 선언되므로 변수, 메소드 앞에 명시적으로 적어서는 안된다.

아무것도 선언되지 않았을 경우 default, friendly 접근 제한자로 선언된다.

 

접근제한자 사용

- 클래스 : public, default

- 생성자 : public, protected, default, private

- 멤버변수 : public, protected, default, private

- 멤버메소드 : public, protected, default, private

- 지역변수 : 접근제한자 사용 불가