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

Java子类调用父类toString()与构造方法问题求助

解决子类调用父类构造方法与toString()的问题

嘿,作为Java新手刚接触继承时碰到这些问题真的超常见!别担心,我这就结合你提到的Shape父类和Circle子类,一步步给你讲清楚这两个关键点~

一、子类构造方法中调用父类构造方法

在Java里,子类构造方法默认会隐式调用父类的无参构造,但如果你想显式指定调用(比如父类有带参数的构造,或者你想明确控制逻辑),就用super()关键字,而且必须放在子类构造方法的第一行!

示例代码:

父类Shape

public class Shape {
    private String color;

    // 无参构造方法
    public Shape() {
        this.color = "white";
        System.out.println("Shape无参构造被调用");
    }

    // 带参数构造方法
    public Shape(String color) {
        this.color = color;
        System.out.println("Shape带参构造被调用,颜色:" + color);
    }

    // getter方法
    public String getColor() {
        return color;
    }

    @Override
    public String toString() {
        return "Shape{color='" + color + "'}";
    }
}

子类Circle

public class Circle extends Shape {
    private double radius;

    // 子类无参构造:显式调用父类无参构造(也可以省略super(),Java会自动调用)
    public Circle() {
        super(); 
        this.radius = 1.0;
        System.out.println("Circle无参构造被调用,半径:" + radius);
    }

    // 子类带参构造:调用父类带参构造
    public Circle(String color, double radius) {
        super(color); // 必须放在构造方法第一行
        this.radius = radius;
        System.out.println("Circle带参构造被调用,半径:" + radius);
    }
}

二、子类toString()方法中调用父类toString()

当你重写子类的toString()时,如果想把父类的属性信息也包含进去,直接用super.toString()就能调用父类的toString方法,再拼接子类自己的属性就搞定啦!

给Circle类添加重写的toString():

@Override
public String toString() {
    // 先获取父类的toString结果,再拼接子类的radius属性
    return super.toString() + ", Circle{radius=" + radius + "}";
}

测试主方法验证

public class TestShape {
    public static void main(String[] args) {
        Circle circle1 = new Circle();
        System.out.println(circle1.toString());

        Circle circle2 = new Circle("red", 5.0);
        System.out.println(circle2.toString());
    }
}

输出结果:

Shape无参构造被调用
Circle无参构造被调用,半径:1.0
Shape{color='white'}, Circle{radius=1.0}
Shape带参构造被调用,颜色:red
Circle带参构造被调用,半径:5.0
Shape{color='red'}, Circle{radius=5.0}

这样你就能清晰看到父类构造和toString方法是怎么被子类正确调用的啦!如果还有细节搞不懂,随时问~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:54:28