오늘은 init과 비슷한 convenience init에 대해서 적어보려고 한다!
struct와 달리 class 생성시 init을 통해서 모든 프로퍼티를 필수로 초기화를 해줘야한다.
그렇다면 convenience init은 뭘까?..
init과의 차이점을 상황을 예시로 이해해보자!
상황)
레스토랑을 운영하고 있는 나!
메뉴의 이름과 가격을 정하려고 한다.
하지만, 이름을 정하지 않았더라도 가격만 넣어놓을 수 있게 하고싶다.
원래 - init은 다음과 같이 모든 프로퍼티를 초기화 해줘야한다.
위에서 말했듯이, 가격만 정해도 사용할 수 있게 만들고 싶다! 라고 할 경우를 위해
convenience init을 이용해서 가격만 넣어도, 자동으로 dishName
은 "미정"으로 인스턴스를 생성할 수 있게 만들었당 ~!
다음과 같이 이름을 지정하지 않은 secondMenu
의 이름은 미정
이라고 출력된걸 볼 수 있다 ㅎㅎ
convenience init은 init이 모든 프로퍼티를 전달받지 않았을 때 ? 일부 프로퍼티만 있을 때 ? 의 상황을 대비하여 에러가 발생하지 않도록 미리 예약해놓는 느낌의 보조 이니셜라이저이다.
*여기서 유의할 점
init의 보조이기 때문에 위에서 선언한 init을 활용해서 사용해야 한다.