본문으로 바로가기

1. 접근 제한자 (Access Modifier)

접근 제한자

  • 접근 제한자는 public, protected, default, private가 있습니다.
  • main() 메소드를 가진 실행 클래스가 아니라면 대부분의 클래스는 외부 클래스에서 사용할 목적으로 설계된 라이브러리 클래스입니다.
  • 외부에서 사용할 라이브러리 클래스는 설계할 때 객체 생성을 막거나 데이터를 보호하거나 하기 위해 접근 제한자를 사용합니다.

접근 제한자 정리

 

2. 클래스의 접근 제한

public

라이브러리 클래스(모든 클래스에서 제한 없이 접근 가능)

 

default

같은 패키지에서만 접근 가능

 

예시

클래스의 접근 제한자 예시

 

3. 생성자의 접근 제한

public

모든 패키지에서 아무런 제한 없이 생성자 호출 가능

 

protected

같은 패키지에 속하는 클래스, 다른 패키지에 속한 클래스가 해당 클래스의 자식 클래스라면 생성자 호출 가능

단, 다른 패키지에 속한 자식 클래스에서 호출할 경우 new 연산자를 이용하여 생성할 수 없습니다. 

자식 클래스의 생성자에서 super( ... )로 부모 클래스의 객체 생성

 

 

default

같은 패키지에 속하는 클래스에서 생성자 호출 가능

 

 

private

클래스 내부에서만 생성자 호출 가능(싱글톤에서 주로 사용)

 

4. 필드와 메소드의 접근 제한

public

모든 패키지에서 아무런 제한 없이 필드와 메소드 사용 가능

 

 

protected

같은 패키지에 속하는 클래스, 다른 패키지에 속한 클래스가 해당 클래스의 자식 클래스라면 필드와 메소드 사용 가능

 

 

default

같은 패키지에 속하는 클래스에서 필드와 메소드 사용 가능

 

 

private

클래스 내부에서만 필드와 메소드 사용 가능

주로 필드는 private를 선언하고 메소드를 통해서 필드 값을 받거나 변경합니다.