[JAVA] 캡슐화와 접근 제어자

min 🎸·2025년 1월 31일

🤔 캡슐화란 ?

객체지향 프로그래밍(OOP)의 중요한 개념으로, 객체의 데이터를 외부에서 직접 접근하지 못하도록 하고, 필요한 경우에만 메서드를 통해 접근할 수 있도록 제한하는 기법이다.
이를 통해 데이터의 무결성을 유지하고, 코드의 유지보수성을 높일 수 있다.

데이터는 모두 숨기고, 기능은 꼭 필요한 기능만 노출하는 것이 좋은 캡슐화이다.

  • 속성과 기능을 묶고, 외부에는 꼭 필요한 기능만 노출하고 나머지는 내부에 다 숨긴다.
  • 캡슐화를 안전하게 완성시키는 장치 → 접근 제어자
  • 접근 제어자와 캡슐화를 통해 데이터를 안전하게 보호
  • 클래스를 사용하는 개발자 입장에서 해당 기능을 사용하는 복잡도 낮출 수 있다.

필드에 직접 접근할 때 문제점

  • 필드에 올바르지 않은 값이 들어갈 가능성
  • 필드의 이름이나 자료형을 변경할 때 사용하는 쪽에도 수정 영향을 미친다.

-> 캡슐화를 통해 문제점 해결


💡 접근 제어자 종류

구분같은 클래스같은 패키지자식 클래스전체
publicOOOO
protectedOOO
(default)OO
privateO
  • private 은 나의 클래스 안으로 속성과 기능을 숨길 때 사용, 외부 클래스에서 해당 기능을 호출할 수 없다.
  • default 는 나의 패키지 안으로 속성과 기능을 숨길 때 사용, 외부 패키지에서 해당 기능을 호출할 수 없다.
  • protected 는 상속 관계로 속성과 기능을 숨길 때 사용, 상속 관계가 아닌 곳에서 해당 기능을 호출할 수 없다.
  • public 은 기능을 숨기지 않고 어디서든 호출할 수 있게 공개한다.

private -> default -> protected -> public

순서대로 private이 가장 많이 차단, public이 가장 많이 허용한다.



💡 클래스 레벨에서의 접근 제어자

클래스 레벨의 접근 제어자는 public 과 default만 사용할 수 있다.

  • private , protected 는 사용할 수 없다.
  • public 클래스는 반드시 파일명과 이름이 같아야 한다.
    • 한 파일안에 여러 클래스를 만들 수 있지만, public 클래스는 파일명과 이름 같아야함
    • 하나의 자바 파일에 public 클래스는 하나만 가능하다.
    • 하나의 자바 파일에 default 접근 제어자 사용하는 클래스는 무한대로 만들 수 있다.

0개의 댓글