作业

46 阅读1分钟
// 点类:基础版,只保留核心属性和方法
class Point {
  // 定义x、y坐标(初始值为0.0)
  var x: Double = 0.0
  var y: Double = 0.0

  // 构造方法:通过参数初始化x和y
  def this(x: Double, y: Double) {
    this()  // 调用无参构造
    this.x = x
    this.y = y
  }

  // 方法1:计算x和y的和
  def distance1(): Double = {
    x + y  // 直接返回和
  }

  // 方法2:计算到原点(0,0)的距离
  def getDist(): Double = {
    val squareSum = x * x + y * y  // 平方和
    Math.sqrt(squareSum)  // 开平方
  }

  // 方法3:计算与另一个点的距离
  def fromPoint(other: Point): Double = {
    val dx = x - other.x  // x方向差值
    val dy = y - other.y  // y方向差值
    val squareDiff = dx * dx + dy * dy  // 差值平方和
    Math.sqrt(squareDiff)  // 开平方得距离
  }

  // 重写toString:直观显示坐标
  override def toString(): String = {
    "Point(" + x + ", " + y + ")"
  }

  // 重写equals:判断两个点是否相同(坐标相等)
  override def equals(other: Any): Boolean = {
    // 判断other是否为Point类型
    if (other.isInstanceOf[Point]) {
      val p = other.asInstanceOf[Point]  // 转换类型
      x == p.x && y == p.y  // 比较坐标
    } else {
      false  // 不是Point类型则不相等
    }
  }
}

// 带标签的点类:继承Point,添加标签属性
class LabelPoint extends Point {
  var label: String = ""  // 标签属性

  // 构造方法:初始化坐标和标签
  def this(x: Double, y: Double, label: String) {
    this()  // 调用父类无参构造
    this.x = x  // 复用父类的x属性
    this.y = y  // 复用父类的y属性
    this.label = label  // 初始化标签
  }
  作业

  、.;;gb,j'poforjo'a