접근제어자

이수현·2025년 7월 3일

Java

목록 보기
8/10
post-thumbnail

Java의 접근 제어자 종류

  • public
  • protected
  • (default)
  • private

1. public

  • 어디서든 접근 가능
  • 가장 개방적인 접근 수준
  • 클래스, 메서드, 필드에 모두 적용 가능
public clas Car{
   public String model;
   
   public void drive(){
      System.out.println("Driving" + model);
   }
}
  • 누구나 model 과 drive()에 접근 할 수 있음

2. private

  • 오직 클래스 내부에서만 접근 가능
  • "캡슐화" 를 위한 핵심 요소
  • 외부에서 직접 접근 불가 -> 간접 접근(getter/setter)으로 유도
public class Car{
   private String model;
   
   public String getModel(){
      return model;
   }
   
   public void setModel(String model){
      this.model = model;
   }
}
  • 외붕에서는 getModel() 또는 setModel()로만 접근 가능

3. protected

  • 같은 패키지 or 상속받은 자식 클래스에서 접근 가능.
  • 주로 상속 관계에서 자식 클래스에게 기능을 물려주고 싶을 떄 사용
public class Car {
   protected void startEngine(){
      system.out.println("Engine started");
   }
}
public class SuperCar extends Car {
   public void turboStart(){
      startEngine();
   }
}

4. (default) 접근 제어자

  • 아무 접근 제어자도 붙이지 않은 경우
  • 같은 패키지 내부에서만 접근 가능
  • 다른 패키지에서는 접근 불가
Class Car {
   void horn(){
      System.out.println("Beep!");
   }
}
  • 같은 패키지 내에서는 Car와 horn() 사용 가능하지만, 다른 패키지에서는 불가능

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

1. 정보 은닉

  • 내부 구현을 숩기고 외부에는 필요한 기능만 공개

2. 보안성 강화

  • 잘못된 접근으로 인한 데이터 손상 방지

3. 유지보수 용이

  • 외부에 노출되지 않으면 내부 구조 변경이 자유로움

4. 객체 지향 설계 원칙 준수

  • 캡슐화, 추상화 와 밀접한 관련
profile
신입개발자의 공부 기록

0개의 댓글