java中的基本构造函数用法

java中的基本构造函数用法,java,constructor,Java,Constructor,无论出于何种原因,我在其他任何地方都找不到这个问题,也无法在网上找到答案。如果我有以下资料: 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;

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

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;
    }

}

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

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

因此:

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
}

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

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;
    }

}

您创建了一个构造函数,但其中的变量只是构造函数本身的局部变量,而不是构造函数之外的变量。为此,您需要类成员字段:

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;
    }
}

还请记住,无需通过
区域x
周长x
这些可以从
半径x
导出。这是假设您忠实于术语的含义,而不仅仅是为了学习语言而玩弄变量。

您在更大的范围内声明了它们。谢谢,这更有意义。我想知道,因为我高中的一节课,我正在学习一本绝对糟糕的BlueJ Java教科书。教科书希望我在构造函数中定义变量,而不在其他任何地方声明它们,并且没有告诉我以后如何使用变量。我觉得它做错了什么,但我想澄清一下。在前面的一章中,它明确指出do while和while是相同的,没有优点/缺点,因此我对它再次出错并不感到惊讶。:)@别忘了我的账户。。。出于好奇,你能提供这本教科书的书名吗?Charles E.Cook的ISBN?Blue Pelican Java。摘录:“do-while循环:do-while循环与while循环完全相同,只是控制表达式位于循环的底部,而不是与while循环一样位于顶部。”(PDF文档第58页)@别忘了我的账户。。。这不是不对的,只是可能会让人很困惑。不管怎样,谷歌搜索了一下,阅读了一些pdf文件,是的,看起来并不漂亮。请注意:(area_x和Percentral_x用于此处未列出的方法,如Radius FromArea和area FromPercentral等,以防其中一种方法未知。
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;
    }
}