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

aze*_*elo 4 scala

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

sealed trait Sealed
trait SealedChild extends Sealed

在另一个文件中,我有

trait SealedGrandchild extends SealedChild

编译代码成功.

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

fra*_*isr 6

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