lateinit var text: String
lateinit var age : Integer
lateinit
은 var
타입 변수를 선언할 때 사용한다.
어떤 타입인지는 선언해야 하지만 초기화는 나중에 해도 괜찮다.
다만 Int같은 primitive 타입은 사용할 수 없다(Integer을 사용).
val test : Int by lazy {
100
}
by lazy
는 람다식으로 사용한다. 따라서 {}중괄호의 마지막 줄이 리턴타입이어야 한다.
그리고 변수는 호출하기 전까지는 메모리에 할당되지 않는다.
이 경우 test 변수 호출하는 시점에 초기화가 되고 메모리에 할당된다.
: 데이터를 담기 위한 클래스
toString()
, hashCode()
, equals()
, copy()
메서드를 자동으로 생성조건 :
1개 이상의 property가 있어야 함
데이터 클래스는 abstract, open, sealed, inner를 붙일 수 없음.
상속이 불가능
: 추상 클래스로, 상속받은 자식 클래스의 종류를 제한한다.