lateinit / lazy 보통은 클래스에서 기본적으로 선언하는 프로퍼티는 null 값을 가질 수 없다. 그러므로 반드시 초기화가 되어야 하는것이 규칙인데, 초기화를 미룰 때 지연초기화 (lateinit, lazy)를 사용한다. 언제 사용할까? 의존성이 있는 초기화나 유닛 테스트를 위한 코드를 작성하면서, 설정에 의한 초기화를 할 때 불편하다. Car클래스의 초기화 부분이 Engine클래스와 의존성을 가질 때, Engine 객체가 생성되지 않으면 완전하게 초기화 할 수 없다. 이처럼 특정 객체에 의존성이 있을 때 지연초기화를 해야한다. lateinit 지연초기화 예시 class Person2 { lateinit var name: String //지연초기화 선언 fun test() { if(!::name..