[kotlin] 코틀린 sealed 클래스의 정의와 사용법

코틀린에서는 sealed 클래스를 사용하여 상속을 제한할 수 있습니다. 이를 통해 미리 정의된 상속 구조를 갖는 클래스 계층을 만들 수 있습니다.

sealed 클래스의 정의

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val error: Throwable) : Result()
}

위 예시에서 sealed 키워드를 사용하여 Result 클래스를 정의했습니다. 이 클래스는 SuccessError 두 하위 클래스를 가집니다.

sealed 클래스의 사용

fun handleResult(result: Result) {
    when (result) {
        is Result.Success -> {
            println("Success: ${result.data}")
        }
        is Result.Error -> {
            println("Error: ${result.error.message}")
        }
    }
}

handleResult 함수는 Result 클래스를 인자로 받아들이며, when 식을 사용하여 각 하위 클래스에 따라 다른 동작을 수행합니다.

이처럼 sealed 클래스를 사용하면 패턴 매칭과 함께 타입 안정성을 보장받을 수 있습니다.

요약

코틀린의 sealed 클래스는 상속을 제한하여 안전한 상속 구조를 유지하는 데 도움을 줍니다. 이를 통해 예상치 못한 하위 클래스의 추가로 인한 오류를 방지하고, 더욱 안정적인 코드를 작성할 수 있습니다.