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

+ Recent posts