val

    [Kotlin] lateinit var 사용법 한 번에 정리하기

    lateinit 이란 무엇이며 언제 사용해야 하는가? 다음과 같은 NonNullableValueStateHolder 클래스를 살펴보자. *실제 코틀린에서는 아래와 같이 getter와 setter을 직접 설정하는 경우가 거의 없다. class NonNullableValueStateHolder() { private var nonNullableValue: String = "testValue" fun set(value: String) { nonNullableValue = value } fun get(): String { return nonNullableValue } } 이 클래스에는 nonNullableValue 라 불리는 String 타입의 non-nullable한 값이 있고, 이 변수에는 "testValue..

    Kotlin의 val은 왜 엄밀한 의미의 불변 변수가 아닌가?

    Kotlin에서는 var을 읽기와 쓰기가 모두 가능한 가변 변수로 val을 읽기만 가능하면 불변 변수로 정의한다. 하지만, 실제로는 var은 물론 val 또한 엄밀한 의미의 불변이 아니다. 지금부터 이유를 알아보도록 하자. 변수에 값을 할당하는 것은 정확히 말하면 메모리 공간을 할당하는 것이다. 다음의 코드를 예시로 들어보자. val blogName = "Kotlin World" var date = "2021-10-02" 위의 코드를 실행하면 blogName이라는 변수값이 정해지고 해당 변수값을 참조했을 때 "Kotlin World"가 저장된 메모리 공간을 반환한다. date라는 변수값은 "2021-10-02"가 저장된 메모리 공간을 반환한다. var date = "2021-10-02" date = "2..

    Kotlin의 가시성 변경자(접근 제한자) : public, internal, protected, private

    목적 최상위 선언의 가시성 변경자에 대해 이해한다. 클래스 멤버의 가시성 변경자에 대해 이해한다. 가시성 변경자 가시성 변경자는 클래스에 대한 외부 접근 권한을 제어한다. Kotlin에서는 4가지 가시성 변경자를 제공한다. public internal protected private Kotlin에서는 최상위 선언에서의 가시성 변경자와 클래스 멤버 선언에서의 가시성 변경자의 접근성이 달라진다. 먼저 공통적으로 적용되는 가시성 변경자인 public에 대해 알아보자. public public은 기본 가시성 변경자로, 어디에서나 접근 가능한 가시성 변경자이다. Kotlin에서는 아무것도 쓰지 않을 때 public이 기본 가시성 변경자로 설정된다. 이는 가시성 변경자를 쓰지 않을 때 default라는 별도의 가시..