0

无论出于何种原因,我在其他任何地方都找不到这个问题,也无法在网上找到答案。如果我有以下情况:

package temp1;

public class MainClass {

    public static void main(String[] args) {
    }

    public MainClass(int radius_x, int area_x, int circumference_x) {
        int radius = radius_x;
        int area = area_x;
        int circumference = circumference_x;
    }

}

假设这甚至是正确的用法,那么我将如何实际使用此处构造函数中定义的变量?由于作用域,它们只能在构造函数内部工作。

4

4 回答 4

2

您是正确的,您提供的代码毫无意义。更常见的场景是使用构造函数初始化一些实例变量,然后可以在整个类中使用。

public class MainClass {
    private int radius;
    private int area;
    private int circumference;

    public static void main(String[] args) {
    }

    public MainClass(int radius_x, int area_x, int circumference_x) {
         this.radius = radius_x;
         this.area = area_x;
         this.circumference = circumference_x;
    }

}
于 2013-11-02T22:53:01.870 回答
0

重用构造函数参数的一种方法是为实例变量分配构造函数的参数值。

像这样:

package temp1;

public class MainClass {

    private int radiusX;
    private int areaX;
    private int circumferenceX;

    public static void main(String[] args) {
    }

    public MainClass(int radius_x, int area_x, int circumference_x) {
        this.radiusX = radius_x;
        this.areaX = area_x;
        this.circumferenceX = circumference_x;
    }
    // TODO getters [and setters] for instance variables
}
于 2013-11-02T22:52:43.300 回答
0
package temp1;

public class MainClass {

        int radius ;
        int area;
        int circumference;

    public static void main(String[] args) {
    }

    public MainClass(int radius_x, int area_x, int circumference_x) {
        this.radius = radius_x;
        this.area = area_x;
        this.circumference = circumference_x;
    }

}
于 2013-11-02T22:54:12.977 回答
0

您创建了一个构造函数,但里面的变量只对构造函数本身来说是本地的,而不是在它之外。为此,您需要类成员字段:

public class MainClass {
    private int radius;
    private int area;
    private int circumference;

    public static void main(String[] args) throws Exception {
        MainClass m = new MainClass(5, 6, 7);
        System.out.println("The radius is " + m.getRadius());
    }

    public MainClass(int radius_x, int area_x, int circumference_x) {
         radius = radius_x;
         area = area_x;
         circumference = circumference_x;
    }

    public int getRadius() {
        return radius;
    }

    public void setRadius(int radius) {
        this.radius = radius;
    }

    public int getArea() {
        return area;
    }

    public void setArea(int area) {
        this.area = area;
    }

    public int getCircumference() {
        return circumference;
    }

    public void setCircumference(int circumference) {
        this.circumference = circumference;
    }
}

请记住,也不需要传入area_xcircumference_x这些可以派生自radius_x. 那是假设您忠实于术语的含义,而不是仅仅玩弄变量来学习语言。

于 2013-11-02T22:55:50.993 回答