我知道Scala允许从密封类派生,如果它放在同一个文件中。可能有一个特殊的结构,或者,如果没有,允许这样的事情是有道理的:
sealed[Derived/*, list of allowed to derive*/] class Base
class Derived extends Base
此语法类似于“保护范围”:
class A{
private[A] val value = 10
}
因此,它允许将Derived类放在单独的文件中。
答案 0 :(得分:1)
密封类除了同一文件中的子类外,不能添加任何新的子类。
设计原因
1 - 程序员只需要担心他们已经知道的子类。
2 - 您可以获得更好的编译器支持,因为编译器会使用警告消息标记缺少模式的组合。