Home

(자바 기초) 접근 제어자 완벽 정리 - public, private, protected 차이

Published in java
June 07, 2024
2 min read
(자바 기초) 접근 제어자 완벽 정리 - public, private, protected 차이

안녕하세요! 20년차 자바 개발자 코딩하는곰입니다. 오늘은 자바 프로그래밍의 핵심 개념 중 하나인 접근 제어자에 대해 깊이 있게 알아보겠습니다. 객체 지향 프로그래밍에서 접근 제어자는 캡슐화를 구현하는 중요한 요소로, public, private, protected의 차이를 정확히 이해하는 것이 자바 개발자의 기본 소양입니다. 이 글을 끝까지 읽으시면 자바 접근 제어자에 대한 모든 궁금증이 해결될 거예요!

1. 접근 제어자란 무엇인가?

접근 제어자(Access Modifier)는 클래스, 메소드, 변수 등의 접근 범위를 지정하는 자바의 키워드입니다. 객체 지향 프로그래밍의 3대 특징 중 하나인 캡슐화(Encapsulation)를 구현하는 핵심 요소로, 잘못 사용하면 코드의 유지보수성과 안정성이 크게 저하될 수 있습니다. 자바에는 네 가지 접근 레벨이 존재합니다:

  1. public: 모든 곳에서 접근 가능
  2. protected: 같은 패키지 + 다른 패키지의 자식 클래스에서 접근 가능
  3. default(package-private): 같은 패키지 내에서만 접근 가능 (접근 제어자 생략시)
  4. private: 같은 클래스 내에서만 접근 가능
public class AccessExample {
public int publicVar = 1;
protected int protectedVar = 2;
int defaultVar = 3; // default 접근 제어
private int privateVar = 4;
}

(자바 기초) 접근 제어자 완벽 정리 - public, private, protected 차이
(자바 기초) 접근 제어자 완벽 정리 - public, private, protected 차이


2. public vs private vs protected 상세 비교

public의 특징

  • 어떤 클래스에서든 접근 가능
  • 주로 API 노출이 필요한 메소드나 상수에 사용
  • 과도한 사용은 캡슐화를 깨트릴 수 있음
public class PublicExample {
public String publicMethod() {
return "누구나 호출 가능";
}
}

private의 특징

  • 클래스 내부에서만 접근 가능
  • 정보 은닉의 핵심
  • getter/setter 메소드와 함께 사용
public class PrivateExample {
private String secret = "비밀 정보";
public String getSecret() { // getter 메소드
return secret;
}
}

protected의 특징

  • 상속 관계에서 주로 사용
  • 같은 패키지면 default와 동일
  • 다른 패키지라도 자식 클래스면 접근 가능
package com.example.parent;
public class Parent {
protected String familyName = "Kim";
}
package com.example.child;
import com.example.parent.Parent;
public class Child extends Parent {
public void printName() {
System.out.println(familyName); // protected 멤버 접근 가능
}
}

(자바 기초) 접근 제어자 완벽 정리 - public, private, protected 차이
(자바 기초) 접근 제어자 완벽 정리 - public, private, protected 차이


회원가입이나 비밀번호 변경 시 안전한 비밀번호를 빠르게 생성할 수 있는 온라인 도구가 유용합니다.

3. 접근 제어자 활용 전략과 모범 사례

  1. 최소 권한 원칙: 필요한 최소한의 접근만 허용
    • 기본적으로 private으로 시작, 필요시 점진적으로 확장
  2. 캡슐화 강화: 클래스 내부 구현을 숨기고 인터페이스만 공개
  3. 상속 설계시 고려사항
    • 메소드 오버라이딩을 허용할 경우 protected 사용
    • final과 함께 사용해 하위 클래스에서의 변경 방지 가능
  4. 테스트를 위한 접근 제어
    • 테스트 목적으로 package-private을 활용할 수 있음
  5. 안티 패턴 주의
    • public 필드 직접 노출 (대신 getter/setter 사용)
    • 불필요한 protected 사용 (과도한 상속 의존성 발생)
// 좋은 예: 캡슐화를 지킨 설계
public class BankAccount {
private double balance;
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
public double getBalance() {
return balance;
}
}
// 나쁜 예: 캡슐화 위반
public class BadBankAccount {
public double balance; // 직접 접근 가능
}

(자바 기초) 접근 제어자 완벽 정리 - public, private, protected 차이
(자바 기초) 접근 제어자 완벽 정리 - public, private, protected 차이


브랜딩이나 콘텐츠 제작 시 정확한 색상 코드를 알아야 할 때, 실시간 컬러 선택 및 코드 확인 도구가 유용하게 쓰일 수 있습니다.

접근 제어자는 자바 프로그래밍의 기초이지만, 그 중요성은 아무리 강조해도 지나치지 않습니다. public, private, protected를 상황에 맞게 적절히 사용하면 더 안정적이고 유지보수하기 좋은 코드를 작성할 수 있습니다. 이 글이 여러분의 자바 개발 역량을 한 단계 업그레이드하는 데 도움이 되었기를 바랍니다. 코딩하는곰이었습니다! 궁금한 점이 있으면 댓글로 남겨주세요. 다음 주제로 찾아뵙겠습니다!

블로그나 쇼핑몰 운영자라면 방문자의 IP나 대략적인 위치가 궁금할 수 있습니다. 이럴 땐 내 IP 정보 확인 도구를 활용해보세요.









최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기
최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기



다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기
다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기



비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기
비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기




Tags

#developer#coding#java

Share

Previous Article
(자바 실무) CSV 파일 읽기/쓰기 완벽 가이드 - 20년 경력 개발자의 노하우

Table Of Contents

1
1. 접근 제어자란 무엇인가?
2
2. public vs private vs protected 상세 비교
3
3. 접근 제어자 활용 전략과 모범 사례

Related Posts

(Java 예외 처리 마스터하기) 다중 catch와 예외 흐름 제어의 모든 것 - 코딩하는곰의 20년 노하우
December 16, 2025
3 min