用sacla设计一个Point类,其x和y坐标可以通过构造器提供。提供一个子类LabeledPoint,其构造器接受一个标签值和x,y坐标,比如:new LabeledPoint(“Black”,1929,230.09)
时间: 2024-10-21 10:06:32 浏览: 38
在Scala中,我们可以设计一个名为`Point`的基本类和一个名为`LabeledPoint`的派生类,如下所示:
```scala
// Point类,表示一个二维点,包含x和y坐标
class Point(x: Double, y: Double) {
def getX: Double = x
def getY: Double = y
override def toString: String = s"Point($x, $y)"
}
// LabeledPoint子类,继承自Point,增加标签信息
case class LabeledPoint(label: String, x: Double, y: Double) extends Point(x, y) {
override def toString: String = s"LabeledPoint($label, $x, $y)"
// 添加获取标签的方法
def getLabel: String = label
}
// 示例如何创建LabeledPoint对象
val labeledPoint = LabeledPoint("Black", 1929.0, 230.09)
println(labeledPoint) // 输出: LabeledPoint(Black, 1929.0, 230.09)
```
在这个设计中,`Point`类有两个基本属性`x`和`y`,并且有一个`toString`方法用于展示点的信息。而`LabeledPoint`通过`case class`的形式从`Point`派生,添加了一个`label`属性以及获取标签的方法。
阅读全文