자바/객체 지향 프로그래밍

자바 접근 제어자 완벽 가이드 - private, protected, public, default

끄적인다 2025. 4. 26. 23:32
반응형

자바에서 **접근 제어자(Access Modifier)**는 클래스, 변수, 메서드 등에 외부에서 접근 가능한 범위를 지정하는 키워드입니다. 잘 활용하면 캡슐화보안성, 유지보수성을 높일 수 있습니다.


✅ 1. 접근 제어자란?

접근 제어자는 다음 4가지가 있습니다:

제어자클래스 내같은 패키지자식 클래스(다른 패키지)전체 접근

private
(default)
protected
public

🔒 2. private – 가장 제한적인 제어자

  • 같은 클래스 내에서만 접근 가능
  • 외부 클래스나 상속 클래스에서도 접근 불가

📌 예시

public class BankAccount {
    private int balance = 1000;

    private void showBalance() {
        System.out.println("잔액: " + balance);
    }
}

외부에서 balanceshowBalance()에 접근하면 컴파일 오류 발생


🏠 3. (default) – 패키지 전용 접근

  • 접근 제어자를 명시하지 않으면 기본(default) 적용
  • 같은 패키지 내에서는 접근 가능, 다른 패키지에서는 불가

📌 예시

class PackageHelper {
    void help() {
        System.out.println("패키지 전용 도우미 클래스");
    }
}

🛡️ 4. protected – 상속 관계까지 허용

  • 같은 패키지 + 다른 패키지의 자식 클래스에서 접근 가능
  • 외부 클래스에서는 접근 불가

📌 예시

public class Parent {
    protected String familyName = "Kim";
}

public class Child extends Parent {
    void showName() {
        System.out.println(familyName); // 가능
    }
}

🌍 5. public – 어디서든 접근 가능

  • 모든 클래스에서 접근 가능
  • 라이브러리나 외부에서 자주 사용되는 API에 주로 사용

📌 예시

public class MathUtils {
    public static int add(int a, int b) {
        return a + b;
    }
}

🧠 6. 정리 요약

접근 제어자 설명 사용 예시
private 클래스 내부 전용 필드, 내부 메서드 보호
default 같은 패키지 허용 패키지 수준 유틸리티
protected 상속 + 같은 패키지 상속 클래스 공유 속성
public 어디서나 접근 가능 공용 API, 라이브러리

🚀 마무리

접근 제어자는 객체 지향 설계의 핵심 도구입니다. 불필요한 접근을 차단하고, 필요한 부분만 외부에 노출하여 유지보수가 쉽고 안전한 코드를 작성할 수 있습니다. 다음 단계로는 getter/setter 패턴, **정보 은닉(Information Hiding)**과의 관계도 공부해보세요!

반응형