생성자로 초기화를 해야 하는 이유

생성자로 초기화해야 하는 이유는? (개체 생성 후 따로 대입하는 방식의 문제)

  • 개념 상의 문제
    • 생성 시 캔이 먼저 나오고, 콜라를 붓는…
  • 후조건 보장: 개체는 생성되는 순간부터 항상 유효한 값을 갖도록 보장됨
  • 사용자(호출자) 배려: 내부 구조나 초기화 순서를 몰라도 생성자만 호출하면 됨
    • 초기화 누락 방지: 생성 후 일일이 대입하면 어떤 멤버를 초기화해야 하는지 빼먹기 쉬움
      • 멤버 변수가 추가되면 모든 사용처를 고쳐야 하지만, 생성자를 쓰면 한 곳만 고치면 됨
    • 잘못된 값 초기화 방지: 어떤 값으로 초기화할지 매번 결정하는 데서 생기는 실수를 줄임
  • 외부 라이브러리: private 멤버는 외부에서 직접 초기화 불가 → 생성자로만 초기화 가능

”생성자는 계약이다”의 의미는?

생성자를 호출하면 항상 유효한 개체가 만들어진다는 약속(계약)

  • 함수는 블랙박스(BlackBox) → 사용자는 내부 구현을 몰라도 됨
  • 캡슐화·데이터 추상화와 같은 맥락

0건의 항목