변수와 접근제한자

야아니·2025년 11월 26일

Java 백엔드 교육

목록 보기
5/6
post-thumbnail

📗 접근 제어자란?

접근 제어자(Access Modifier)
👉 클래스, 필드(변수), 메서드, 생성자에 대해
“어디까지 접근을 허용할지 범위를 정하는 키워드”
이다.

접근제어자 사용 범위

  • 접근 제어자는 클래스, 필드(변수), 메서드, 생성자에 적용할 수 있으며,
  • 각 요소의 외부 접근 가능 범위를 제어해 객체의 구조와 데이터를 보호한다.

🗒️ Java 접근 제어자 정리 (Access Modifier)


1️⃣ public — 완전 개방형

어디서든 접근 가능

  • 패키지 밖이든
  • 클래스 밖이든
  • 다른 프로젝트 모듈이든
    전부 접근 가능
public int age;

✅ 특징

  • 접근 제한 없음
  • 공개 API 만들 때 주로 사용
  • 너무 남발하면 캡슐화 깨져서 유지보수 힘들어짐

👉 가장 넓은 접근 범위


2️⃣ protected — 조금 좁혀진 공개 범위

protected int score;

✅ 특징

  • 같은 패키지 → 바로 접근 가능
  • 다른 패키지상속받은 자식 클래스만 접근 가능
  • 👉 상속 관계에서 자주 사용

3️⃣ default — 아무것도 안 쓰는 경우

패키지 전용 접근

키워드가 없어서 “default 접근제어자”라고 부름

int level;   // default

✅ 특징

  • 같은 패키지 안에서는 접근 가능
  • 다른 패키지에서는 절대 접근 불가

4️⃣ private — 가장 폐쇄적

오직 같은 클래스 내부에서만 접근 가능

private String password;

✅ 특징

  • 객체 내부에서만 사용
  • 외부에서 절대 접근 불가
  • 캡슐화할 때 가장 많이 씀
    getter / setter로 접근 조절

👉 가장 좁은 접근 범위


🔥 접근 범위 정리표

제한자접근 가능 범위범위 크기
public어디서든⭐⭐⭐⭐ (가장 넓음)
protected동일 패키지 + 상속받은 클래스⭐⭐⭐
default동일 패키지⭐⭐
private동일 클래스⭐ (가장 좁음)

💡 어디에 어떻게 쓰면 좋냐?

  • private
    → 거의 모든 필드(속성)
    → 외부에서 막 써버리면 객체 무너짐

  • public
    → 진짜 외부에 공개해야 할 메서드

  • protected
    자식 클래스에 기능 열어주고 싶을 때

  • default
    패키지 단위로 묶어서 관리할 때

profile
세계평화를 원하는 사람입니다.

0개의 댓글