접근 제어자
- 클래스, 메서드, 변수 등의 접근 범위를 제한하는 키워드로, 외부에서 사용할 수 있는지 여부를 결정한다
- 클래스, 맴버 변수, 메서드 생성자에 사용되고, 지정되어 있지 않으면 default로 지정된다.
1. public
- 범위: 모든 클래스에서 접근 가능.
- 사용처: 클래스, 메서드, 필드.
- 설명: public으로 선언된 요소는 모든 클래스에서 접근할 수 있습니다. 프로젝트 내 어디서든지 사용 가능한 공개 멤버로 설정됩니다.
2. protected
- 범위: 같은 패키지 내의 클래스나 자식 클래스에서 접근 가능.
- 사용처: 메서드, 필드 (클래스에는 사용할 수 없음).
- 설명: protected는 동일 패키지 내의 모든 클래스와 다른 패키지의 자식 클래스에서 접근할 수 있도록 허용합니다.
3. default (아무 접근 제어자도 명시하지 않은 경우)
- 범위: 같은 패키지 내에서만 접근 가능.
- 사용처: 클래스, 메서드, 필드.
- 설명: 접근 제어자를 명시하지 않으면 패키지 전용(default) 접근 수준이 됩니다. 같은 패키지 내에서만 접근할 수 있으며, 패키지를 벗어나면 접근할 수 없습니다.
4. private
- 범위: 같은 클래스 내에서만 접근 가능.
- 사용처: 메서드, 필드 (클래스에는 사용할 수 없음).
- 설명: private로 선언된 멤버는 해당 클래스 내에서만 접근할 수 있습니다. 외부에서는 접근할 수 없으므로 정보 은닉에 유용합니다.
< 접근 제어자 정리표 >
접근 제어자 | 같은 클래스 | 같은 패키지 (클래스 폴더) | 자식 클래스 | 외부 클래스 |
public | O | O | O | O |
protected | O | O | O | X |
default | O | O | X | X |
private | O | X | X | X |
< 사용 가능한 접근 제어자 >
클래스 | public, default |
메서드 & 멤버 변수 | public, protected, default, private |
지역변수 | 없음 |
접근 제어자를 이용한 캡슐화 (은닉성)
- 접근제어자는 클래스 내부에 선언된 데이터를 보호하기 위해서 사용합니다.
- 유효한 값을 유지하도록, 함부로 변경하지 못하도록 접근을 제한하는 것이 필요합니다.
생성자의 접근 제어자
- 생성자에 접근 제어자를 사용함으로 인스턴스의 생성을 제한할 수 있습니다.
- 일반적으로 생성자의 접근 제어자는 클래스의 접근 제어자와 일치합니다.
+ 같은 패키지 내
src
├── packageA
│ └── Car.java
└── packageB
└── Main.java
- Car 클래스에 default 접근 제어자가 적용된 필드나 메서드는 packageA 내에서만 접근할 수 있습니다.
- packageB에 있는 Main 클래스에서는 Car의 default 필드나 메서드에 접근할 수 없습니다.
'Back-End (Web) > JAVA' 카테고리의 다른 글
[JAVA] 클래스 간의 관계와 상속 (0) | 2024.11.12 |
---|---|
[JAVA] package와 import (0) | 2024.11.12 |
[JAVA] This와 This() (0) | 2024.11.12 |
[JAVA] 생성자 (1) | 2024.11.12 |
[JAVA] 인스턴스 멤버와 클래스 멤버 (0) | 2024.11.12 |