圆类多个构造函数

时间:2016-10-05 21:26:20

标签: java

我正在尝试修改类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());


        }
    }

1 个答案:

答案 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方法Stringenumname()值和valueOf(String)之间进行转换。