TIL

Lec 14. 코틀린에서 다양한 클래스를 다루는 방법

1. Data Class

data class PersonDto(
  val name: String,
  val age: Int
)

2. Enum Class

enum class Country (
  private val code: String
) {
  KOREA("KO"),
  AMERICA("US")
  
  ;
}

enum과 when 키워드 활용법

fun handleCountry(country: Country) {
  when (country) {
    Country,KOREA -> TODO()
    COUNTRY.AMERICA -> TODO()
  }
}

enum class Country (
  private val code: String
) {
  KOREA("KO"),
  AMERICA("US")
  ;
}

3. Sealed Class, Sealed Interface

sealed class HyundaiCar(
  val name: String,
  val price: Long
)

class Avante : HyundaiCar("아반떼", 1_000)

class Sonata : HyundaiCar("소나타", 2_000)

class Grandeur : HyundaiCar("그랜저", 3_000)

Sealed Class와 when 키워드 활용법

fun main() {
  handleCar(Avante())
}

private fun handleCar(car: HyundaiCar) {
  when (car) {
    is Avante -> TODO()
    is Grandeur -> TODO()
    is Sonata -> TODO()
  }
}