Java 접근제어자 (public, private, protected, default)
요약
Java 접근제어자(public, private, protected, default)의 개념과 접근 범위를 알아봅니다. 캡슐화의 원리와 정보처리기사 실기에서 자주 나오는 접근제어자 패턴을 정리합니다.
접근제어자 핵심 정리
| 접근제어자 | 같은 클래스 | 같은 패키지 | 자식 클래스 | 외부 전체 |
|---|---|---|---|---|
| public | O | O | O | O |
| protected | O | O | O | X |
| default (생략) | O | O | X | X |
| private | O | X | X | X |
접근제어자란?
접근제어자(Access Modifier) 는 클래스, 필드, 메서드에 대한 접근 범위를 제한하는 키워드입니다.
쉽게 말하면, "누가 이 데이터/기능을 사용할 수 있는가" 를 정하는 것입니다.
접근 범위를 넓은 순서대로 정리하면 다음과 같습니다.
public
어디서든 접근 가능한 가장 개방적인 접근제어자입니다.
인터페이스를 구현할 때, 메서드 앞에 반드시 public을 붙여야 합니다. 인터페이스의 메서드는 외부에서 호출해야 하기 때문입니다.
private
같은 클래스 안에서만 접근 가능한 가장 제한적인 접근제어자입니다.
private은 외부에서 직접 접근할 수 없기 때문에, public 메서드(getter/setter)를 통해 간접적으로 접근합니다. 이것이 바로 캡슐화입니다.
default (package-private)
접근제어자를 생략하면 default입니다. 같은 패키지에서만 접근 가능합니다.
protected
같은 패키지 혹은 자식 클래스에서 접근 가능합니다.
protected는 상속 관계에서 의미가 있습니다. 부모 클래스의 필드나 메서드를 자식 클래스에서 사용할 수 있도록 허용하면서, 외부에는 공개하지 않을 때 사용합니다.
시험에서 자주 나오는 패턴
private 필드 + public 메서드 (캡슐화)
시험에서 가장 자주 나오는 접근제어자 패턴입니다.
필드를 private으로 감추고 public 메서드로만 접근하게 하면, 잘못된 값이 들어오는 것을 막을 수 있습니다.
왜 접근을 제한할까? (캡슐화)
외부에서 데이터를 직접 수정하면 안 되는 경우가 있습니다.
이처럼 데이터를 보호하고, 정해진 방법으로만 접근하게 하는 것을 캡슐화(Encapsulation) 라고 합니다. 캡슐화는 객체지향 프로그래밍의 핵심 원칙 중 하나입니다.