Lewis's Tech Keep

[Kotlin] 코틀린 적응기 - 중첩 클래스, data class & enum class & sealed class 본문

Kotlin/Kotlin 적응기

[Kotlin] 코틀린 적응기 - 중첩 클래스, data class & enum class & sealed class

Lewis Seo 2024. 10. 1. 21:40

시작

많이 사용되는 것은 아니지만 정말 한 클래스에 종속되었다는 걸 가끔 표현하기 위해서 쓰는 경우가 있는 중첩클래스,

그리고 DTO로 자주 사용되는 data class나 enum class 등 요긴하게 사용할 듯 하다.

 

배우고 있는 것

https://www.inflearn.com/course/java-to-kotlin

 

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide) 강의 | 최태현 - 인프런

최태현 | 이 강의를 통해 Kotlin 언어의 특성과 배경, 문법과 동작 원리, 사용 용례, Java와 Kotlin을 함께 사용할 때에 주의할 점 등을 배울 수 있습니다., 요즘 대세인 코틀린을 공부하고 싶다면?⭐ J

www.inflearn.com

 

 

1. 중첩 클래스

바깥 클래스를 참조하는 Inner class 와 참조하지 않는 class 를 각각 아래와 같은 방법으로 생성할 수 있다.

class House (
    val address: String,
    val livingRoom: LivingRoom
) {

    // 기본 내부 클래스 : 권장
    class LivingRoom(
        private var area: Double
    )

    // 바깥 클래스 참조 : 권장하지 않음
    // inner class
    inner class LivingRoom(
        private var area: Double
    ) {
        val address: String
            get() = this@House.address
    }
}

 

2. 여타 클래스

2-1. data class

dto 클래스에 자주 이용된다. 

equals & hashcode & toString이 내부적으로 구현되어있어서 신경쓰지 않아도 된다.

record 클래스와 닮아있다.

// Data Class
// DTO 에 주로 사용
// equals and hashcode까지 해줌, toString도
data class PersonDto(
    val name: String,
    val age: Int,
)

 

2-2. enum class

enum class 키워드로 생성한다. 

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

fun handleCountry(country: Country) {
    when(country) {
        Country.KOREA -> ""
        Country.AMERICA -> ""
    }
}

 

2-3. sealed class

상속 받을 클래스를 같은 패키지에서 다 설정할 수 있다.

// 컴파일 타임에 다 체크함
// 하위 클래스가 같은 패키지에 있어야함
// when 과 함께하면 다 체크 해 줌
// 추상화가 필요한 Entity나 dto에 자주 쓰임
sealed class Car (
    val name: String,
    val price: Long,
)

class ACar : Car("nameA", 100)

class BCar : Car("nameB", 100)

class CCar : Car("nameC", 100)

 

Comments