在试验密封特性时,我发现(令我惊讶的是)如果在一个文件中,我有这个代码
sealed trait Sealed trait SealedChild extends Sealed
在另一个档案中,我有
trait SealedGrandchild extends SealedChild
编译代码成功。
为什么SealedGranchild
可以被定义,即使它在另一个文件中有一个密封的祖先类型?除了明确声明SealedChild
为sealed
之外,有没有办法阻止SealedChild
在其定义的文件之外扩展?
答案 0 :(得分:6)
sealed
修饰符仅适用于Sealed
的直接子项,它不会传播到整个继承树。在alll的情况下传播它将是非常严格的,所以你必须为你想要密封的树的每个级别重复修改器。