代码

33 阅读1分钟

// 定义 Point 类 class Point(var x: Double, var y: Double) { def whereAmI(): String = { if (x > 0 && y > 0) "第一象限" else if (x < 0 && y > 0) "第二象限" else if (x < 0 && y < 0) "第三象限" else if (x > 0 && y < 0) "第四象限" else "在坐标轴上" } def getDist(): Double = math.sqrt(x * x + y * y) def fromPoint(other: Point): Double = { math.sqrt((x - other.x) * (x - other.x) + (y - other.y) * (y - other.y)) } override def equals(obj: Any): Boolean = { obj match { case p: Point => p.x == x && p.y == y case _ => false } } override def toString: String = s"Point(x,x, y)" } // 定义 LabelPoint 子类 class LabelPoint(label: String, x: Double, y: Double) extends Point(x, y) { override def toString: String = s"LabelPoint(label,label, x, $y)" } // 测试对象(顶层对象,可直接运行) object PointDemo extends App { val p1 = new Point(1, 1) println(p1.whereAmI()) // 第一象限 println(p1.getDist()) // 1.4142135623730951 val p2 = new Point(1, -1) println(p1.fromPoint(p2)) // 2.0 println(p1 == new Point(1, 1)) // true println(p1) // Point(1.0, 1.0) val lp = new LabelPoint("black", 1, 2) println(lp) // LabelPoint(black, 1.0, 2.0) }