Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

Kotlin 상수(const)란 무엇이고, 어떻게 선언할까? 4가지 방법 총정리

모든 프로그래밍 언어에는 프로그램 전체에서 절대 변하지 않는 값이 필요합니다. Kotlin 역시 이런 값을 다루기 위한 전용 키워드를 제공하는데, 바로 const입니다. 변수 선언 앞에 const를 붙이면 해당 값은 컴파일 시점에 결정되며, 프로그램이 실행되는 동안 항상 동일하게 유지됩니다.

이 글에서는 Kotlin에서 상수를 선언하는 네 가지 대표적인 방법을 예제 코드와 함께 하나씩 살펴보겠습니다.

const 키워드 사용 시 알아둘 규칙

예제를 살펴보기 전에, const 키워드의 기본 제약 조건을 먼저 짚고 넘어가면 이해가 훨씬 쉽습니다.

  • const는 반드시 val과 함께 사용해야 하며, var와는 조합할 수 없습니다.
  • 기본형 타입(Int, Double, Boolean 등)과 String에만 적용할 수 있습니다.
  • 함수 내부에는 직접 선언할 수 없고, 파일 최상위 레벨 또는 object·companion object 내부에 선언해야 합니다.

방법 1. 최상위 레벨(Top-level) 선언

const 변수는 파일의 최상위 레벨에 선언할 수 있으며, 이렇게 선언된 상수는 파일 전체 어디에서든 자유롭게 사용할 수 있습니다. 가장 단순하고 널리 쓰이는 방식입니다.

private const val MY_TOP_LEVEL_CONST_VAL = "Type 1 --> 최상위 상수 값 예제"

fun main() {
println(MY_TOP_LEVEL_CONST_VAL)
}

실행 결과:

Type 1 --> 최상위 상수 값 예제

방법 2. 지역 상수(Local Constant)

다른 언어와 마찬가지로 Kotlin에서도 특정 스코프 안에서만 유효한 지역 상수를 만들 수 있습니다. 다만 앞서 언급했듯이 const 키워드는 함수 내부에서 사용할 수 없기 때문에, 지역 범위의 불변 값은 val로 선언합니다. val로 선언된 값은 해당 블록 안에서 재할당될 수 없으므로 사실상 상수처럼 동작합니다.

fun main() {
val MY_LOCAL_CONST = "Type 2 --> 지역 상수 값 예제"
println(MY_LOCAL_CONST)
}

실행 결과:

Type 2 --> 지역 상수 값 예제

방법 3. Companion Object에서 상수 선언

Kotlin은 companion object 내부에도 const를 선언할 수 있는 옵션을 제공합니다. 클래스 이름을 통해 바로 접근할 수 있다는 장점이 있지만, 최근 프로그래밍 아키텍처 관점에서는 그다지 권장되지 않습니다. companion object는 기본적으로 자체 getter/setter 메서드를 생성하기 때문에 성능 문제를 일으킬 수 있기 때문입니다.

fun main() {
println(Student.MY_CONSTANT)
}

class Student {
companion object {
const val MY_CONSTANT = "Type 3 --> companion object 사용"
}
}

실행 결과:

Type 3 --> companion object 사용

방법 4. Object 클래스 선언 후 직접 호출

상수는 object 클래스 내부에 선언할 수도 있습니다. Kotlin의 object는 싱글턴(singleton)으로 동작하기 때문에, 별도의 인스턴스 생성 없이 객체 이름만으로 상수에 바로 접근할 수 있으며, 프로그램 곳곳에서 재사용하기에 좋은 구조입니다.

fun main() {
println(MyConstant.CONST_USING_OBJECT_CLASS)
}

object MyConstant {
const val CONST_USING_OBJECT_CLASS = "Type 4 --> object 클래스를 활용한 const 예제"
}

실행 결과:

Type 4 --> object 클래스를 활용한 const 예제

마무리 정리

Kotlin에서 상수를 선언하는 방법은 크게 네 가지로 정리할 수 있습니다. 파일 전체에서 공유하는 값이라면 최상위 레벨 선언이 가장 깔끔하고, 함수나 블록 안에서만 필요한 값은 val로 지역 선언하면 됩니다. 클래스와 연관된 상수라면 companion objectobject 클래스를 활용할 수 있지만, 성능과 코드 구조를 고려하면 최상위 선언 방식을 우선적으로 검토하는 것이 좋습니다. 상황에 맞는 방식을 선택해 더 안전하고 읽기 좋은 Kotlin 코드를 작성해 보세요.