使用sealed trait和sealed abstract class作为基类的区别
使用sealed trait和sealed abstract class作为基类的区别
尝试学习Akka时,我经常会发现类层次结构与以下相似:
sealed trait Message case class TextMessage(user: String, text: String) extends Message case class StatusMessage(status: String) extends Message
然而,在Scala docs中有一个如下的例子:
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与抽象类(或sealed抽象类)作为基类有什么区别?使用其中一个有什么优势?
编辑:
具体来说,如果trait和抽象类都是sealed的,在文件外无法扩展它们,对吗?在这种情况下,我也无法从Java进行继承,对吗?如果是这样的话,被封存了的特性将使得建议的重复使用中的大多数参数无用,因为它们是关于文件外部的继承的。
admin 更改状态以发布 2023年5月21日