斯卡拉 - 密封的特质大孩子

时间:2017-04-22 05:27:03

标签: scala

在试验密封特性时,我发现(令我惊讶的是)如果在一个文件中,我有这个代码

sealed trait Sealed
trait SealedChild extends Sealed

在另一个档案中,我有

trait SealedGrandchild extends SealedChild

编译代码成功。

为什么SealedGranchild可以被定义,即使它在另一个文件中有一个密封的祖先类型?除了明确声明SealedChildsealed之外,有没有办法阻止SealedChild在其定义的文件之外扩展?

1 个答案:

答案 0 :(得分:6)

sealed修饰符仅适用于Sealed的直接子项,它不会传播到整个继承树。在alll的情况下传播它将是非常严格的,所以你必须为你想要密封的树的每个级别重复修改器。