Enums define a fixed set of instances of one type. Sealed classes define a restricted class hierarchy where each subclass can carry different state. Both enable exhaustive when, but sealed classes are more flexible for modeling complex variants.
Expanding on the short answer — what usually matters in practice:
A tiny example (an explanation template):
// Example: discuss trade-offs for "sealed-classes-vs-enums-in-kotlin?"
function explain() {
// Start from the core idea:
// Enums define a fixed set of constants. Sealed classes define a closed type hierarchy where
}