Kotlin

내일배움캠프 12.18 TIL

공부처음하는사람 2023. 12. 22. 20:55

# lateinit

><h3> lateinit 사용 예시
  
```kotlin
fun main() {
    var myCar = Car()
    myCar.owner // init에서 초기화 하지 않을 시 오류가 발생한다.
}

class Car() {
    lateinit var owner: String // 나중에 init에서 초기화 하겠다는 코드

    init {
        this.owner = "Frank"
    }
}
```
- lateinit을 사용 후 init에서 초기화를 하지 않을 경우 my.Car.owner 부분은 작동하지 않는다.

  
><h3> GETTER / SETTER
  
```kotlin
package ch01

fun main() {
    var myCar = Car()
    println(myCar.myBrand)
    myCar.maxSpeed = 240
    println("Maxspeed is ${myCar.maxSpeed}")
//  myCar.myModel = "M3"  이 경우에 M3로 변경되지 않음.
    println("Model is ${myCar.myModel}") // 게터는 비공개가 아니기 때문에 출력이 가능하다.
}

class Car() {
    lateinit var owner: String // 나중에 init에서 초기화 하겠다는 코드

    val myBrand: String = "BMW"
        // Custom getter
        get() {
            return field.toLowerCase()
        }

    var maxSpeed: Int = 250
        get() = field
        set(value) {
            field = if (value > 0) value else throw IllegalArgumentException("Maxspeed cannot be less than 0")
        }

    //        get() = field      변수를 생성할 시에 이 코드는 자동으로 생성된다. (보이지 않을뿐)
//        set(value){
//            field = value
//        }
    var myModel: String = "M5"
        private set  // 하나의 클래스에서만 사용가능, 이 경우엔 Car에서만 사용이 가능하다.


    init {
        this.myModel = "M3"
        this.owner = "Frank"
    }
}
```

  
게터와 세터 참고할만한 글
https://blog.naver.com/PostView.nhn?blogId=lth9036&logNo=221472031826

'Kotlin' 카테고리의 다른 글

배열  (1) 2023.12.22
내일배움캠프 12.19 TIL  (1) 2023.12.22
내일배움캠프 12.15 TIL  (2) 2023.12.22
객체지향 프로그램 기초개념 5가지  (1) 2023.12.22
내일배움캠프 12.13 TIL  (2) 2023.12.22