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

Java Rectangle类编写求助:私有实例变量与公共方法构造器问题

修复你的Rectangle类代码错误

你的代码存在几个关键错误,逐个修正如下:

  1. 错误的static修饰符与变量拼写
    实例变量width和height不该用static修饰(static是类变量,所有实例共享同一值),同时你把height拼写成了heigth,导致后续方法找不到正确变量。

  2. 单参数构造器逻辑错误
    你在构造器里创建新的Rectangle对象完全是错误逻辑,正确做法是给当前实例的宽高赋值。

  3. 双参数构造器的变量遮蔽问题
    构造器参数名和实例变量名重名时,直接赋值会导致参数给自己赋值,实例变量根本没被初始化,必须用this区分。


修正后的完整代码:

class Rectangle {
    // 实例变量,去掉static,修正拼写
    private double width;
    private double height;

    // 单参数构造器:创建正方形
    public Rectangle(double sideLength) {
        this.width = sideLength;
        this.height = sideLength;
    }

    // 双参数构造器:创建长方形
    public Rectangle(double width, double height) {
        // 用this区分实例变量和参数
        this.width = width;
        this.height = height;
    }

    public double computeArea() {
        return height * width;
    }

    public double computePerimeter() {
        return 2 * (height + width);
    }

    public double getHeight() {
        return height;
    }

    public double getWidth() {
        return width;
    }
}

关键知识点说明:

  • this关键字:在类的构造器或方法中,this代表当前对象的引用。当局部变量(比如构造器参数)和实例变量同名时,必须用this.变量名来访问实例变量,避免变量遮蔽。
  • 实例变量 vs 类变量:不带static的是实例变量,每个对象有自己的副本;带static的是类变量,所有对象共享同一个值,这里每个矩形应该有自己的宽高,所以用实例变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:12:17