: 이전에 배웠듯이 부모와 다른 클래스를 멤버로 가질 경우,
생성자의 선처리 영역에서는 무조건 부모와 다른 클래스의 기본 생성자를 호출하게 된다.
하지만, 이니셜라이저를 이용하면 부모와 다른 클래스의 인자가 있는 생성자를 호출할 수 가 있다.
부모 클래스
외부 클래스
자식과 Main부
-> 인자가 잇는 생성자를 호출하기 위해서는 이니셜라이저에 인자값을 넣은 생성자를 작성하면된다.
변경된 코드
부모와 외부클래스 : 기본 생성자 없음
main부 : 기본 생성자가 없어서 오류 발생한다.
-> 이때는 반드시 초기화리스트로 초기화를 하자.
번거롭게 부모와 외부클래스에 기본생성자 만들 필요까지는 없다.
이니셜라이저에서 외부 클래스나 부모 클래스의 작성된 순서는
부모나 외부 클래스의 변환생성자 호출의 순서에 영향을 끼치지는 않는다.
클래스 내부에 작성된 순서대로 호출된다. 부모 -> 멤버 클래스
부모 클래스나, 외부클래스의 생성자 호출을 막는 것은 불가능하다.
: 멤버라고 해서 모두 초기화리스트에 포함시킬 수 있는 것은 아니다.
멤버가 클래스 타입일 경우, 이니셜라이저가 해당 클래스의 생성자를 호출한다고 알고 있다.
여기서 멤버는 말그대로 클래스에 적힌 클래스 만을 의미한다.
적힌 클래스 내부의 멤버까지 포함되는 것은 아니다!
물려받은 멤버변수를 초기화하는 것은 부모의 생성자에서 초기화를 하자!