아니오, 중복된 property는 없는 게 맞아요. 아마도 예제코드를 수정하는게 좋을 것 같은데
sealed class RoutineItem(
val id: String
){
class RoutineModel(
id: String,
...
) : RoutineItem(id)
class DetailModel(
set: String,
...
) : RoutineItem(set)
}
sealed class RoutineItem {
abstract val id: String
data class RoutineModel(
override val id: String,
...
) : RoutineItem()
data class DetailModel(
override val id: String,
...
) : RoutineItem()
}
|
Option1 처럼, sealed class 프로퍼티를 정의하고, 상속받는 클래스에는 val이 없이 사용하거나,
Option2와 같이, sealed class의 프로퍼티를 abstract으로 정의하고 상속받는 클래스에 val을 사용할 수도 있습니다.
첫번째 옵션은 val 프로퍼티를 사용하지 않기 때문에, data class를 사용할 수 없고, 두번째 옵션에서는 사용할 수 있습니다.
대신, 첫번째 옵션은
val item: RoutineItem = ....
item.id
|
처럼, sealed class타입으로 해서 id를 바로 접근할 수 있지만, 두번째 옵션에서는 이거는 안됩니다. 대신 두번째 옵션은 data class의 기능인 copy나 destruction등을 사용할 수가 있죠. 상황에 맞게 적절하게 선택하시면 될 것 같아요.