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

Java中Main调用Shape子类display()方法无法解析报错求助

问题解决:Cannot resolve method 'display()'(不修改Main类)

问题根源

Main类里调用的是无参的display(),但你当前的Shape及其子类只提供了带参版本的display方法,编译器找不到对应方法所以报错;另外父类的display方法存在参数遮蔽问题(方法参数result覆盖了成员变量result),子类的area方法也没把计算结果存到成员变量里,导致后续无法正确获取面积值。

修改后的完整代码

Shape类

class Shape {
    // 初始化result为空字符串,避免拼接时出现null前缀
    String result = "";
    double area;

    // 修正display方法逻辑:只接收res参数,更新成员变量result并返回
    public String display(String res) {
        // 把res追加到成员变量result中,符合作业要求
        this.result += res;
        return this.result;
    }

    public double area() {
        return this.area = 0;
    }

    static double area(double area) {
        return area = 0;
    }
}

Triangle类

class Triangle extends Shape {
    double length;
    double width;

    public Triangle(double length, double width) {
        this.length = length;
        this.width = width;
        // 调用area方法计算并赋值成员变量area
        area();
    }

    @Override
    public double area() {
        // 计算面积并存到成员变量area,方便后续display方法使用
        this.area = length * width / 2;
        return this.area;
    }

    // 添加无参display方法,完全匹配Main类的调用
    public String display() {
        // 把面积转为字符串,传给父类的display方法
        String areaStr = String.valueOf(this.area);
        return super.display(areaStr);
    }

    @Override
    public String toString() {
        return this.getClass().getSimpleName();
    }
}

Circle类

class Circle extends Shape {
    double radius;

    public Circle(double radius) {
        this.radius = radius;
        // 调用area方法计算并赋值成员变量area
        area();
    }

    @Override
    public double area() {
        // 计算圆的面积并存到成员变量area
        this.area = Math.PI * Math.pow(radius, 2);
        return this.area;
    }

    // 添加无参display方法,匹配Main类的调用
    public String display() {
        String areaStr = String.valueOf(this.area);
        return super.display(areaStr);
    }

    @Override
    public String toString() {
        return this.getClass().getSimpleName();
    }
}

关键修改说明

  • 添加无参display方法:在Triangle和Circle中新增无参的public String display(),完全适配Main类的调用方式,直接解决方法找不到的报错。
  • 修正父类display逻辑:去掉冗余的result参数,直接操作成员变量this.result,避免参数遮蔽导致的逻辑错误,符合作业要求的"add res parameter to result and return the result"。
  • 子类area方法赋值成员变量:修改子类的area()方法,把计算结果存到成员变量area里,这样display方法可以直接拿到已计算好的面积值。
  • 初始化result变量:在Shape类里把result初始化为空字符串,避免第一次拼接时出现null前缀的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 01:02:19