密封類用來表示受限的類繼承結構:當一個值為有限幾種的類型, 而不能有任何其他類型時。在某種意義上,他們是枚舉類的擴充:枚舉類型的值集合 也是受限的,但每個枚舉常量隻存在一個執行個體,而密封類 的一個子類可以有可包含狀态的多個執行個體。
聲明一個密封類,使用 sealed 修飾類,密封類可以有子類,但是所有的子類都必須要内嵌在密封類中。
sealed 不能修飾 interface ,abstract class(會報 warning,但是不會出現編譯錯誤)
使用密封類的關鍵好處在于使用 when 表達式 的時候,如果能夠 驗證語句覆寫了所有情況,就不需要為該語句再添加一個 else 子句了。