在尝试学习Akka时,我经常遇到类层次结构类似于以下内容的示例:
sealed trait Message
case class TextMessage(user: String, text: String) extends Message
case class StatusMessage(status: String) extends Message
然而,在Scala文档中,有以下示例:
abstract class Notification
case class Email(sourceEmail: String, title: String, body: String) extends Notification
case class SMS(sourceNumber: String, message: String) extends Notification
case class VoiceRecording(contactName: String, link: String) extends Notification
在类层次结构中,使用带有无构造函数参数的密封特质(sealed trait)与抽象类(或者在这种情况下是密封抽象类)作为基类有何区别?使用其中一个是否比另一个有优势?
编辑:
具体来说,如果特质和抽象类都是被密封的,那么我就不能在文件外扩展它们,对吧?在这种情况下,我也不能从Java继承它们,对吗?如果是这种情况,被密封的特性将使得在建议的重复问题中发现的大多数论点失去意义,因为它们都涉及文件之外的继承。