Java 접근 제어자 정리

hyunnzl·2025년 4월 6일

자바

목록 보기
6/8
post-thumbnail

접근 제어자는 클래스 내부 구성요소(필드, 메서드 등)의 접근 범위를 설정하는 키워드이다.
자바에서는 총 4가지 접근 제어자를 제공한다.

  • public
  • protected
  • (default) ← 아무 제어자도 없는 경우
  • private





접근 제어자별 접근 범위

접근 제어자같은 클래스같은 패키지상속 받은 다른 패키지전체(외부 클래스)
public
protected
(default)
private

💡 참고: (default)는 접근 제어자를 명시하지 않은 상태를 의미






각 접근 제어자 설명

public

  • 어디서든 접근 가능 (패키지, 클래스 관계 없이)
  • 클래스, 메서드, 생성자 등에 사용됨
  • 라이브러리 API, 메인 클래스 등 외부 공개용에 적합
public class MyClass {
    public void print() {
        System.out.println("공개 메서드입니다.");
    }
}

private

  • 자기 클래스 내부에서만 접근 가능
  • 필드 은닉(Encapsulation)에 주로 사용
  • 외부에서 직접 접근하지 못하게 하여 객체의 무결성 보장
public class User {
    private String name;

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
}

protected

  • 같은 패키지 + 다른 패키지의 상속 관계 클래스에서 접근 가능
  • 상속 구조에서 공통 기능 제공할 때 유용
  • 너무 남용하면 캡슐화가 약해질 수 있어 주의
class Parent {
    protected void hello() {
        System.out.println("안녕!");
    }
}

class Child extends Parent {
    void say() {
        hello(); // 접근 가능
    }
}

(default: 아무 접근 제어자 없음)

  • 같은 패키지 내에서만 접근 가능
  • 보통 패키지 단위의 내부 로직 구성 시 사용
class DefaultClass {
    void hello() {
        System.out.println("default 접근입니다.");
    }
}





적절한 사용법

  • 외부에서 사용해야 할 API → public
  • 클래스 내부 전용 → private
  • 상속 전용 → protected
  • 같은 패키지 안에서만 쓸 때 → (default)

0개의 댓글