package level02
object class015 {
class Point(val x: Double, val y: Double) {
def getDist(other: Point): Double = {
val dx = this.x - other.x
val dy = this.y - other.y
Math.sqrt(dx * dx + dy * dy)
}
def move(dx: Double, dy: Double): Point = {
new Point(this.x + dx, this.y + dy)
}
override def toString: String = s"Point($x, $y)"
}
class LabelPoint(val label: String, x: Double, y: Double) extends Point(x, y) {
def getLabel: String = label
override def move(dx: Double, dy: Double): LabelPoint = {
new LabelPoint(this.label, this.x + dx, this.y + dy)
}
override def toString: String = s"LabelPoint(label='$label', x=$x, y=$y)"
}
object PointTest extends App {
val p1 = new Point(1.0, 2.0)
val p2 = new Point(4.0, 6.0)
println("Point p1: " + p1)
println("Point p2: " + p2)
println("p1 到 p2 的距离: " + p1.getDist(p2))
println("p1 移动 (3,4) 后: " + p1.move(3, 4))
println("-" * 30)
val lp1 = new LabelPoint("起点", 0.0, 0.0)
val lp2 = new LabelPoint("终点", 5.0, 12.0)
println("LabelPoint lp1: " + lp1)
println("LabelPoint lp2: " + lp2)
println("lp1 的标签: " + lp1.getLabel)
println("lp1 到 lp2 的距离: " + lp1.getDist(lp2))
println("lp1 移动 (2,3) 后: " + lp1.move(2, 3))
}
}