Kotlin

[Kotlin] 초기화(initialize), get() / set(), 열거형 클래스(Enum Class)

KyungMin08 2024. 12. 4. 15:23
728x90

개요

오늘은 Kotlin에서 초기화는 어떤 방식이 있는지 열거형 클래스는 무엇을 의미하는지 알아보자. (본 글은 자바를 알고 있다고 가정하고 글을 쓰기 때문에 조금 불친절할 수 있습니다.)

 

초기화(initialize)

lateinit

Kotlin에서 초기화는 기본 초기화늦은 초기화가 있다. 기본 초기화는 변수처럼 선언과 동시에 초깃값을 지정하는 것이고 늦은 초기화는 선언을 먼저 하고 나중에 초깃값을 지정해 주는 거다.

lateinit 키워드를 사용할 때는 늦은 초기화이기 때문에 var 키워드도 같이 사용해야 한다.

lateinit 사용 예시

initialize 함수를 호출하면 늦은 초기화가 발생한다. 기본적으로 class는 프로퍼티를 선언할 때 선언과 동시에 초기화까지 해줘야 하는데 lateinit var 키워드를 사용하여 선언만하고 나중에 초기화해도 된다.


get(), set()

Kotlin에서 클래스에 프로퍼티를 선언하면 내부적으로 getter / setter 등이 자동으로 생성된다. (단, 클래스 헤더에 프로퍼티를 넣을 경우 val이나 var를 선언해줘야 getter와 setter가 자동 생성된다. 선언하지 않을 경우 그냥 생성자 매개변수로 받는다.)

우리 눈에는 보이지 않지만 클래스의 프로퍼티에 접근하게 되면 val로 선언된 프로퍼티는 읽기용이기 때문에 getter만 생성되고 var로 선언하면 읽기 쓰기용이니까 getter / setter들이 생성된다.

Kotlin에서는 자바보다 간단하게 get() / set()를 사용하여 getter와 setter를 커스텀 마이징한다.

val 프로퍼티명: 타입
    get() { 본문 } or get() = 본문
var 프로퍼티명: 타입
    set(value) {
        본문
    }

자바 코드에 비하면 확연히 간단한 것을 확인할 수 있다. 참고로 get()과 set()는 같이 사용할 수 있으며 형식을 바꿔서 사용할 수도 있다.

set()을 사용할 때는 var로 선언해줘야 한다.

get() {  }과 set() {  }을 이렇게 선언할 경우 중괄호 안에 여러 연산과 작업을 수행할 수 있다. get() =과 set() = 이렇게 선언할 경우에는 하나의 작업만 수행될 수 있다. 


열거형 클래스(Enum Class)

Enum Class는 열거형 클래스로 여러 개의 값을 열거해서 사용할 수 있도록 하는 클래스(Class)이다. enum class 옆이 클래스명이고 , (콤마)를 통해 나열된 값들이 해당 클래스의 인스턴스이다.

그럼 Enum Class를 왜 사용하냐! 상수를 집합으로 관리할 수 있어서 많이 사용한다. 또 인스턴스 생성과 상속을 방지하며, 상수값의 타입 안정성을 보장한다는 장점이 있고 가장 큰 장점은 코드의 가독성과 불필요한 코드가 줄어든다는 점이다.

Enum Class에는 기본으로 포함되어 있는 2가지 함수가 있는데..

  • name : 해당 인스턴스의 이름
  • ordinal : 순차적으로 0, 1, 2, 3..의 값을 부여한다.
enum class 열거형클래스명 {
    인스턴스1,
    인스턴스2,
    인스턴스3
}

이렇게 생성자를 포함해서 작성해줄 수도 있고

심지어 추상 클래스나 인터페이스를 상속하여 사용할 수 있다. 다만, 일반 클래스는 상속하지 못하며 다른 클래스에게 상속할 수 없다.

주로 값을 선택, 열거할 때 사용된다.

(추가 설명 필요해 보임)


부족한 부분이나 잘못된 부분이 있을 수 있습니다. 댓글로 남겨주시면 감사하겠습니다. 😁

 

728x90