我想知道是否有更好的方法:
sealed abstract class Edge(val id: String)
case class LabeledEdge(override val id: String, label: String)
extends Edge(id)
case class WeightedEdge(override val id: String, weight: Double)
extends Edge(id)
我的问题是,除了id
之外,我在这里所代表的成员Edge
中有很多成员override val
。我必须在抽象类中定义的每个成员之前编写{{1}},这使得它非常麻烦,并且认为应该有一些更好的方法来做到这一点。
提前致谢!
答案 0 :(得分:4)
您可以将trait
与抽象def
s(或val
s)一起使用,而不使用构造函数:
sealed trait Edge{ def id(): String } // or { val id: String }
case class LabeledEdge(id: String, label: String) extends Edge
case class WeightedEdge(id: String, weight: Double) extends Edge