접근 제어자

상훈·2024년 5월 22일

클래스 외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한하는 기능

자바는 4가지 종류의 접근 제어자를 제공

  • private : 모든 외부 호출을 막음
  • default : 같은 패키지 안에서 호출은 허용
  • protected : 같은 패키지 안에서 호출 + 상속 관계의 호출 허용
  • public : 모든 외부 호출 허용

접근 제어자의 핵심은 속성과 기능을 외부로부터 숨기는 것!

접근 제어자를 사용하지 않으면 사용자(개발자)는 메서드를 사용하여 특정 필드 값에 접근하는 것이 아닌 직접적으로 필드에 접근하는 문제, 너무 많은 메서드가 사용자(개발자)에게 노출되어 오히려 사용자가 어떻게 사용해야 하는지 복잡해지는 문제가 발생할 수 있다.

접근 제어자 사용

필드, 메서드
  • private, default, protected, public 모두 사용 가능

    클래스
  • private, default 두 개만 사용 가능

  • 하나의 자바 파일에 public 클래스는 하나만 등장할 수 있음

    • public 클래스는 반드시 파일명과 이름이 같아야 함
  • 하나의 자바 파일에 default 접근 제어자를 사용하는 클래스는 무한정 만들 수 있음

    • public 클래스 없이 default 클래스로만 이루어진 경우 파일명과 이름이 같은 default 클래스가 존재하지 않아도 됨

캡슐화

데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어서 외부에서의 접근을 제한하는 것

-> 속성과 기능을 하나로 묶고, 외부에 꼭 필요한 기능만 노출하고 나머지는 모두 내부로 숨기는 것

어떤 것을 숨기고 어떤 것을 노출해야 할까?

  1. 데이터를 숨겨라(Field)
    • 객체 내부의 데이터를 외부에서 함부로 접그하게 두면, 클래스에서 데이터를 다루는 로직을 모두하고 데이터를 변경할 수 있음
  2. 기능을 숨겨라(Method)
    • 외부에서 사용하지 않고 내부에서만 사용하는 기능을 외부에서 알 필요가 없음
profile
문송 개발자

0개의 댓글