我正在尝试修改类Circle以包含第三个构造函数,用于构造带有两个参数的Circle实例 - 半径为double,颜色为String。还修改主类以使用此构造函数构造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());
}
}
答案 0 :(得分:1)
嗯,你没有使用它,所以这个消息不应该是一个惊喜。只需在某处调用双参数构造函数(例如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
来表示颜色,以避免出现大小写差异(例如"红色" vs." Red")。您始终可以使用内置的enum
方法String
和enum
在name()
值和valueOf(String)
之间进行转换。