You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中仅用两个点实现Rectangle类的getWidth()方法相关问题

矩形类宽高计算实现方案

前置前提

默认你的_pointSW(西南点)、_pointNE(东北点)为轴对齐矩形的对角坐标点,点实例支持获取x、y坐标属性(可通过.x/.y属性或者getX()/getY()方法访问)。

1 基础getWidth()直接实现

不需要新增任何变量,直接通过两个点的x坐标差值计算即可:

// 示例为Java语法,其他OOP语言逻辑同理
public double getWidth() {
    // 可选添加Math.abs保证返回宽度为正值,避免点坐标传反的异常
    return Math.abs(_pointNE.getX() - _pointSW.getX());
}

2 私有方法封装的优化方案

你提到的私有方法方案完全可行,且复用性、可维护性更好,不会新增公共方法,完全符合你的约束要求,实现逻辑如下:

第一步:定义私有宽高计算方法

这两个方法仅类内部可访问,不会对外暴露,所有计算逻辑实时基于已有两个点变量完成,不需要新增任何存储变量:

// 私有方法:计算宽度
private double calculateWidth() {
    // 可在此处添加自定义校验逻辑,比如坐标合法性断言
    assert _pointNE.getX() >= _pointSW.getX() : "东北点x坐标不能小于西南点x坐标";
    return _pointNE.getX() - _pointSW.getX();
}

// 私有方法:计算高度,同理实现
private double calculateHeight() {
    assert _pointNE.getY() >= _pointSW.getY() : "东北点y坐标不能小于西南点y坐标";
    return _pointNE.getY() - _pointSW.getY();
}

第二步:公共getWidth()方法直接调用私有方法

public double getWidth() {
    return calculateWidth();
}

// 后续需要高度时也可以直接调用私有方法实现getHeigth()
public double getHeight() {
    return calculateHeight();
}

该方案的优势

  • 逻辑复用:后续实现面积、周长计算等其他内部方法时,直接调用私有方法即可,不需要重复编写坐标差计算逻辑
  • 易维护:如果后续需要调整计算规则,比如适配特殊坐标系、增加异常兼容逻辑,仅修改私有方法即可,所有调用处自动同步生效
  • 完全符合约束:没有新增公共方法,也没有新增任何实例变量,所有计算都是基于现有两个点变量实时完成

内容的提问来源于stack exchange,提问作者Miri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:36:04