sealed class 与 kotlin 中的 sealed 接口有什么区别

What is the difference between sealed class vs sealed interface in kotlin

Kotlin 1.5 引入了 sealed interface。即使我知道 类 和接口之间的区别,我也不清楚使用 sealed interface 而不是 sealed class

的最佳实践和好处是什么

我现在应该总是使用 interface 即使是简单的情况吗?还是具体情况?

谢谢

Obs:没有找到类似的问题,只关于sealed classes

选择使用密封 class 而不是接口的一个主要原因是,如果存在您不想成为 public 的常见 property/function。接口的所有成员总是 public.

成员必须是 public 的限制可以在使用扩展 functions/properties 的接口上解决,但前提是它不涉及非 public 存储状态。

否则,密封接口更灵活,因为它们允许子类型成为其他东西的子class,枚举class,或多个密封interface/class层次结构的子类型.