斯卡拉的密封类“密封范围”

时间:2013-07-14 15:51:18

标签: scala

我知道Scala允许从密封类派生,如果它放在同一个文件中。可能有一个特殊的结构,或者,如果没有,允许这样的事情是有道理的:

sealed[Derived/*, list of allowed to derive*/] class Base
class Derived extends Base

此语法类似于“保护范围”:

class A{
  private[A] val value = 10
}

因此,它允许将Derived类放在单独的文件中。

1 个答案:

答案 0 :(得分:1)

密封类除了同一文件中的子类外,不能添加任何新的子类。

设计原因

1 - 程序员只需要担心他们已经知道的子类。

2 - 您可以获得更好的编译器支持,因为编译器会使用警告消息标记缺少模式的组合。