gpt4 book ai didi

java - Circle 类多个构造函数

转载 作者:行者123 更新时间:2023-12-01 09:25:16 38 4
gpt4 key购买 nike

我正在尝试修改 Circle 类以包含第三个构造函数,用于构造具有两个参数的 Circle 实例 - 一个用于半径的 double 值和一个用于颜色的字符串。还要修改主类以使用此构造函数构造 Circle 的实例。我遇到了这个问题,我不断收到构造函数 Circle 从未使用过的消息。请看一下代码。

 public class Circle {
private double radius;
private String color;


public Circle() {
radius = 1.0;
color = "red";
}


public Circle(double r) {
radius = r;
color = "Blue";
}

public Circle(double r, String c) {
radius = r;
color =c;
}



public double getRadius() {
return radius;
}

public void setRadius(double newRadius) {
radius = newRadius;
}


public String getColor()
{
return color;
}

public void setColor(String newColor) {
color=newColor;
}



public double getArea() {
return radius*radius*Math.PI;
}
}

public class Main {

public static void main(String[] args) {

Circle c1 = new Circle();
System.out.println("The circle has radius of " + c1.getRadius());
System.out.println("and area of " + c1.getArea());

Circle c2 = new Circle(2.5);
System.out.println("The circle has radius of " + c2.getRadius());
System.out.println("and area of " + c2.getArea());


Circle c3 = new Circle(0.5);
c3.setColor("Green");
System.out.println("The circle has radius of "
+ c3.getRadius());
System.out.println("and area of " + c3.getArea());
System.out.println("color is: " + c3.getColor());




Circle c5 = new Circle();
c5.setRadius(500.0);
System.out.println("radius is: " + c5.getRadius());
c5.setColor("Yellow");
System.out.println("color is: " + c5.getColor());


}
}

最佳答案

嗯,您没有使用它,所以这个消息应该不足为奇。只需在某处调用双参数构造函数(例如 Circle c3 = new Circle(0.5, "Green"); ),该消息就会消失。当然,如果您将所有实例创建更改为双参数构造函数,您将收到零参数和一参数版本的警告。

或者,您可以更改构造函数定义:

public class Circle {
public Circle() {
this(1.0, "red");
}


public Circle(double r) {
this(r, "Blue");
}

public Circle(double r, String c) {
radius = r;
color = c;
}
...
}

不过,我不得不说,当您使用默认半径时,颜色的默认值为“红色”,而当您指定半径时,颜色的默认值为“蓝色”,这很奇怪。我建议不要这样做,在这种情况下,我会将第一个构造函数更改为:

public Circle() {
this(1.0);
}

您可能还想考虑使用 enum对于您的颜色,以避免大小写差异问题(例如“红色”与“红色”)。您始终可以在 enum 之间进行转换值和 String使用内置enum方法name()valueOf(String) .

关于java - Circle 类多个构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39883954/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com