[JAVA] 접근제어자

김규리·2026년 8월 1일

접근제어자란?

접근 제어자는 클래스, 변수, 메서드 등에 접근할 수 있는 범위를 제한하는 기능이다. 누가 사용할 수 있는지 권한을 정하는 역할이라고 생각하면 된다. 예를 들어, 게시글을 모든 사람이 볼 수 있게 할지, 작성자만 볼 수 있게 할지 설정하는 것과 비슷한 개념이다.

자바의 접근제어자

접근 제어자특징
public어디에서나 접근 가능
private동일 클래스 내에서만 접근 가능
protected동일 패키지 혹은 하위 클래스에서 접근 가능
default동일 패키지에서만 접근 가능

접근 범위

public
   ↓
protected
   ↓
default
   ↓
private

위로 갈수록 접근 범위가 넓고, 아래로 갈수록 접근 범위가 좁아진다.

접근 제어자를 사용하는 이유

접근 제어자를 사용하면 외부에서 중요한 데이터를 함부로 수정하는 것을 막을 수 있다. 예를 들어 학생의 점수는 0~100 사이만 저장되어야 한다고 가정해 보자. 접근 제어자가 없다면 외부에서 다음과 같이 잘못된 값을 넣을 수도 있다.

student.score = -10;
student.score = 1000;

이렇게 되면 프로그램의 데이터가 잘못될 수 있다.

반면 private으로 변수를 숨기고 setter 메서드를 통해 값을 변경하면 조건을 검사할 수 있다.

public class Student {

    private int score;   // 외부에서 직접 접근 불가능

    public void setScore(int score) {
        if (score >= 0 && score <= 100) {
            this.score = score;
        }
    }

    public int getScore() {
        return score;
    }
}

이처럼 잘못된 값이 저장되는 것을 방지할 수 있다.

접근 제어자를 사용하지 않았을 때의 문제점

  • 외부에서 변수 값을 마음대로 변경할 수 있다.
  • 잘못된 데이터가 저장될 수 있다.
  • 프로그램의 안정성이 떨어진다.
  • 변수에 직접 접근하여 검증(방어) 로직이 무력화된다.

0개의 댓글