sdut-oop-4-求圆的面积(类与对象)

import java.util.Scanner;
class Circle {
    private int radius;
    public Circle() {
        radius=2;
        System.out.println("This is a constructor with no para.");
    }
    public Circle(int radius) {
        this.radius=radius;
        System.out.println("This is a constructor with para.");
    }
    public void set(int radius) {
        if(radius<=0) {
            this.radius=2;
        }
        else {
            this.radius=radius;
        }
    }
    public int get() {
        return this.radius;
    }
    public String toString() {
        return "Circle [radius=" + radius + "]";
    }
    public String getArea() {
        double S=Math.PI*Math.pow(radius,2);
        return String.format("%.2f",S);
    }
}
public class Main{
    public static void main(String[] args) {
        Circle c1=new Circle();
        System.out.println(c1);
        System.out.println(c1.getArea());
        Circle c2=new Circle();
        System.out.println(c2);
        System.out.println(c2.getArea());
        Scanner sc=new Scanner(System.in);
        int radius=sc.nextInt();
        c2.set(radius);
        System.out.println(c2);
        System.out.println(c2.getArea());
        radius=sc.nextInt();
        Circle c3=new Circle(radius);
        c3.set(radius);
        System.out.println(c3);
        System.out.println(c3.getArea());
        sc.close();
            }
    }

输入4,5后运行结果

img


为什么输出4后没有出现Circle类中This is a constructor with para.这句话

该回答引用GPTᴼᴾᴱᴺᴬᴵ
在代码中,输入4时调用的是无参构造函数,而不是带参构造函数,因此没有输出"This is a constructor with para."这句话。

具体来说,当你输入4时,代码执行到这一行:

Circle c2=new Circle();

因为没有传入参数,所以会调用无参构造函数,即:

public Circle() {
    radius=2;
    System.out.println("This is a constructor with no para.");
}

因此输出了"This is a constructor with no para."这句话。如果你想调用带参构造函数,需要将代码改成:

Circle c2=new Circle(4);

这样就会输出"This is a constructor with para."这句话。

因为你调用的是set函数,不是构造函数啊