1. 접근 제한자 (Access Modifier)
- 접근 제한자는 public, protected, default, private가 있습니다.
- main() 메소드를 가진 실행 클래스가 아니라면 대부분의 클래스는 외부 클래스에서 사용할 목적으로 설계된 라이브러리 클래스입니다.
- 외부에서 사용할 라이브러리 클래스는 설계할 때 객체 생성을 막거나 데이터를 보호하거나 하기 위해 접근 제한자를 사용합니다.
2. 클래스의 접근 제한
public
라이브러리 클래스(모든 클래스에서 제한 없이 접근 가능)
default
같은 패키지에서만 접근 가능
예시
3. 생성자의 접근 제한
public
모든 패키지에서 아무런 제한 없이 생성자 호출 가능
protected
같은 패키지에 속하는 클래스, 다른 패키지에 속한 클래스가 해당 클래스의 자식 클래스라면 생성자 호출 가능
단, 다른 패키지에 속한 자식 클래스에서 호출할 경우 new 연산자를 이용하여 생성할 수 없습니다.
자식 클래스의 생성자에서 super( ... )로 부모 클래스의 객체 생성
default
같은 패키지에 속하는 클래스에서 생성자 호출 가능
private
클래스 내부에서만 생성자 호출 가능(싱글톤에서 주로 사용)
4. 필드와 메소드의 접근 제한
public
모든 패키지에서 아무런 제한 없이 필드와 메소드 사용 가능
protected
같은 패키지에 속하는 클래스, 다른 패키지에 속한 클래스가 해당 클래스의 자식 클래스라면 필드와 메소드 사용 가능
default
같은 패키지에 속하는 클래스에서 필드와 메소드 사용 가능
private
클래스 내부에서만 필드와 메소드 사용 가능
주로 필드는 private를 선언하고 메소드를 통해서 필드 값을 받거나 변경합니다.
'Backend > 객체 지향 프로그래밍' 카테고리의 다른 글
[Java] Annotation (메타데이터) (0) | 2022.04.16 |
---|---|
[Java] 객체의 무결성 보호 (Getter, Setter 메소드) (0) | 2022.04.15 |
[Java] 패키지와 import문 (0) | 2022.04.13 |
[Java] 상수 (final 필드) (0) | 2022.04.12 |
[Java] 단 하나의 객체만 생성 (싱글톤 패턴, Singleton pattern) (0) | 2022.04.10 |