[Spring] 실전! 스프링 부트와 JPA 활용 #객체 생성자 접근 제어 protected로 변경

김상현·2022년 11월 1일
0

Spring

목록 보기
2/13
post-thumbnail

📒 [실전! 스프링 부트와 JPA 활용 - 김영한] 학습 후 정리자료입니다.


📍 접근 제어자(Access Modifier)

  • 객체 지향에서 정보 은닉(data hiding)이란 사용자가 굳이 알 필요가 없는 정보는 사용자로부터 숨겨야 한다는 개념이다.
  • 그렇게 함으로써 사용자는 언제나 최소한의 정보만으로 프로그램을 손쉽게 사용할 수 있게 된다.
  • 자바에서는 이러한 정보 은닉을 위해 접근 제어자(access modifier)라는 기능을 제공하고 있다.
  • 접근 제어자를 사용하면 클래스 외부에서의 직접적인 접근을 허용하지 않는 멤버를 설정하여 정보 은닉을 구체화할 수 있다.

📍 객체 생성자의 접근 제어를 protected로 설정하는 이유

  • 기본 생성자의 접근 제어를 protected 로 설정해놓게 되면 무분별한 객체 생성에 대해 한번 더 체크할 수 있는 수 있다.
  • 만약 객체 생성자의 접근 제어가 public 일 경우 객체를 생성하고 멤버변수들의 값을 초기화할 때, 객체의 멤버변수들을 설정할 방법이 없다.
  • 이 때, 실수로 멤버 변수의 초기화를 누락할 경우 객체는 불완전한 상태가 된다.
class Member {
	String name;
    int age;
    
    public Member() {
    }
}

Member member = new Member(); // 객체 생성
member.name = "nameA" // member.name 값 초기화
					  // member.age의 값 초기화를 누락
  • 기본 생성자의 접근 제어를 public 대신 protected를 사용하면 이와 같은 문제를 방지할 수 있다.

📍 @NoArgsConstructor(access = PROTECTED)

  • @NoArgsConstructor(access = PROTECTED) 는 객체 생성자의 접근 제어를 protected로 설정해주는 Annotation이다.
profile
목적 있는 글쓰기

0개의 댓글