class 의 property 는 반드시 초기화를 해주어야 한다.
그러나 class안에 기존에 정의된 class를 property를 추가할 경우에는 초기화가 어렵다.
이를 해결하기 위하여, 추가된 키워드라 보면 될 것으로 보인다.
해당 내용에 대한 예제는 다음과 같다.
// 점을 표현하는 클래스
class Point(val x: Int, val y: Int)
// 사각형을 표현하는 클래스
class Rect
{
lateinit var pt: Point
lateinit var pt2: Point
val width: Int
get() = pt2.x - pt.x
val height: Int
get() = pt2.y - pt.y
val area
get() = width * height
}
fun main(args: Array<String>)
{
val rect = Rect()
rect.pt = Point(3, 3)
rect.pt2 = Point(6, 5)
println("너비: ${rect.width}")
println("높이: ${rect.height}")
println("넓이: ${rect.area}")
}
예제를 보면 확인할 수 있듯이, Rect Class안에 pt, pt2 라는 Point Property를 추가하였으며, 또한 main 함수에서 pt, pt2 를 초기화 하는 것을 확인 할 수 있다.
lateinit 키워드는 이러한 역할을 하기 위함이라고 보면 될 것으로 판단된다.
참고 : 초보자를 위한 Kotlin 200제 라는 책을 기반으로 공부 내용을 정리하였습니다.
'Kotlin' 카테고리의 다른 글
[Kotlin] Nothing type, Nullable, null (0) | 2020.08.31 |
---|---|
[Kotlin] Class (0) | 2020.08.29 |
[Kotlin] const (0) | 2020.08.29 |
[Kotlin] inline 함수 (0) | 2020.08.29 |
[Kotlin] 객체 선언 및 동반자 객체 (0) | 2020.08.29 |