반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- input
- Visual Studio Code
- Array
- string
- javascript
- 이클립스
- Java
- json
- replace
- CSS
- IntelliJ
- map
- 자바스크립트
- 자바
- 자바문법
- math
- vscode
- 정규식
- 문자열
- html
- table
- 인텔리제이
- js
- list
- Eclipse
- ArrayList
- 이탈리아
- HashMap
- 배열
- date
Archives
- Today
- Total
어제 오늘 내일
[Java] 접근제어 (public, private, protected, default) 본문
Java의 접근 제어자(Access Modifier)는 클래스, 필드, 메서드가 어디까지 접근 가능한지 범위를 결정하는 중요한 문법 요소입니다. 적절한 접근 제어자는 코드의 안정성과 캡슐화를 강화하고, 불필요한 노출을 막아 더 안전한 구조를 만들 수 있게 합니다. Java에서 제공하는 주요 접근 제어자는 public, private, protected, default(명시 없음)입니다.
1. public
가장 개방적인 접근 제어자입니다.
어디서든 접근이 가능합니다.
public class Person {
public String name;
}
특징
- 다른 패키지에서도 접근 가능
- 외부 공개 API 등을 작성할 때 사용
2. private
가장 제한적인 접근 제어자입니다.
같은 클래스 내부에서만 접근 가능합니다.
public class Person {
private int age;
private void printAge() {
System.out.println(age);
}
}
특징
- 클래스 외부에서는 절대 접근 불가
- 캡슐화(Encapsulation)를 강화하는 핵심 요소
- 주로 필드(멤버 변수)에 많이 사용됨
3. protected
같은 패키지 + 다른 패키지의 자식 클래스에서 접근 가능
public class Animal {
protected String type;
}
특징
- default보다 넓고 public보다 좁은 접근 범위
- 상속 구조에서 자식 클래스가 부모의 멤버를 활용할 수 있음
4. default (명시하지 않음)
아무 제어자를 붙이지 않으면 default 접근 제어자가 됩니다.
같은 패키지에서만 접근 가능합니다.
class Car {
String model; // default
}
특징
- 패키지 내부에서만 사용되는 클래스/메서드 등에 활용
- 의도적으로 외부 패키지에 노출시키고 싶지 않을 때 사용
5. 접근 범위 비교 표
제어자 동일 클래스 같은 패키지 상속(다른 패키지) 다른 패키지
| 접근제어 | 동일 클래스 | 동일 패키지 | 상속(다른 패키지) | 다른 패키지 |
| public | ✔ | ✔ | ✔ | ✔ |
| protected | ✔ | ✔ | ✔ | ✘ |
| default | ✔ | ✔ | ✘ | ✘ |
| private | ✔ | ✘ | ✘ | ✘ |
표로 보면 각 접근 제어자가 얼마나 열려 있고 닫혀 있는지 한눈에 이해할 수 있습니다.
6. 활용 예시
외부에서 접근시키고 싶은 경우 → public
public void run() { ... }
외부 접근을 막고 내부에서만 사용 → private
private void validate() { ... }
패키지 내부에서만 사용 → default
void process() { ... }
상속 관계에서는 허용하되, 일반 외부 접근은 제한 → protected
protected void move() { ... }
7. 정리
- public: 어디서든 접근 가능
- private: 클래스 내부에서만 접근 가능
- protected: 같은 패키지 + 상속 관계에서 접근 가능
- default: 같은 패키지에서만 접근 가능
접근 제어자를 적절히 활용하면 코드 보안과 유지보수성이 크게 향상됩니다.
반응형
'IT > Java' 카테고리의 다른 글
| [Java] 상속, 부모클래스, 자식클래스 (0) | 2025.12.20 |
|---|---|
| [Java] void 메소드 호출 (0) | 2025.12.19 |
| [Java] void 뜻 (0) | 2025.12.19 |
| [Java] static이란? (0) | 2025.12.18 |
| [Java] 클래스와 객체 차이 (0) | 2025.12.18 |
Comments
