basic constructor usage in java

匆匆过客 提交于 2019-12-13 21:00:51

问题


For whatever reason, I cannot find this question anywhere else, nor can I find the answer online. If I have the following:

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

}

Assuming that this is even correct usage, then how would I actually use the variables defined in the constructor here? They only work inside of the constructor thanks to scope.


回答1:


You are correct that the code you supply makes little sense. A more common scenario is to use the constructor to initialize a few instance variables, which can then be used throughout the class.

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

}



回答2:


One way to re-use the arguments of your constructor is to have instance variables assigned with your constructor's arguments' values.

As such:

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
}



回答3:


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

}



回答4:


You created a constructor, but the variables inside are only local to the constructor itself and not outside of it. To do this, you need class member fields:

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

Keep in mind also there is no need to pass in area_x and circumference_x Those can be derived from radius_x. That's assuming you are being faithful to the meanings of the terms rather than just playing around with variables to learn the language.



来源:https://stackoverflow.com/questions/19747784/basic-constructor-usage-in-java

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!