[Kotlin] sealed 클래스 차이점

조회수 303회

sealed 클래스를 사용하려고하는데 문득보다 차이점이 궁금해서 질문드립니다.

일단 일반적으로 가장 많이 사용되는 형식이..

sealed class Parent( val t1: String, val t2: String, ) { data class A( val id: String, val title: String, val num : Int ) : Parent( t1 = id, t2 = title, ) { }

data class B(
    val id: String,
    val title: String,
) : Parent(
    t1 = id,
    t2 = title,
) { }

}

이런식으로 sealed 클래스 내부에 클래스가 정의되고 클래스들이 상위 클래스를 상속 받는 형식..

그리고 제가 궁금한것은 이러한 형식의 sealed 클래스입니다.

sealed class Parent(
    val t1: String,
    open val t2: String,
) { }
data class A(
    val id: String,
    val title: String,
    val num : Int
) : Parent(
    t1 = id,
    t2 = title,
) { }
data class B(
    val id: String,
    val title: String,
) : Parent(
    t1 = id,
    t2 = title,
) { }

이번에는 sealed 클래스와 상속받는 클래스는 따로 정의되어있습니다.

이 방법과 위 방법의 차이점이 궁금합니다.

그리고 추가로 두번째 방법은 일반 open 클래스의 상속과 무엇이 다른지 궁금합니다..

아무리봐도 open class와 sealed 클래스와 차이점이 없는것같은데.. 차이점이 무엇인가요?

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)