Scala 密封类

如果想让case类的所有子类都必须在申明的该类的相同的文件中定义,可以将样例类的通用超类声明为sealed,叫做密封类,密封就是外部用户不能在其他文件中定义子类。不能被继承只能自己用

sealed abstract class TrafficLightColor
case object Red extends TrafficLightColor
case object Yellow extends TrafficLightColor
case object Green extends TrafficLightColor

尖叫提示:密封类,只能在同一个文件中定义子类。

一般情况下Scala 中 在同一个package下面 比如在A.scala 文件中定义了抽象类A,则 可以在A.scala文件中定义 继承子类 比如 case class B /object B  extends A。 但是如果A在声明的时候加入了sealed  则,A的子类只能在本文件声明。同package下别的文件声明会报错。

关注公众号 海量干货等你
原文地址:https://www.cnblogs.com/sowhat1412/p/12734163.html