2017-04-22 76 views
3

雖然與密封特性試驗,我發現(我驚奇),如果在一個文件中,我有這樣的代碼斯卡拉 - 密封特質盛大孩子

 
sealed trait Sealed 
trait SealedChild extends Sealed 

而在另一個文件中,我有

 
trait SealedGrandchild extends SealedChild 

編譯代碼成功。

爲什麼SealedGranchild可以定義,即使它在另一個文件中有一個密封的祖先類型?除了明確聲明SealedChildsealed之外,有沒有辦法阻止SealedChild被擴展到定義的文件之外?

+0

未將'SealedChild'標記爲'sealed'明確表示您希望允許將其擴展到其他文件中。 –

回答

6

sealed修飾符只適用於Sealed的直接子代,它不會傳播到整個繼承樹。在所有情況下傳播它都是非常嚴格的,所以你必須重複你想要密封的樹的每一層的修飾符。