Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将参数设置为全局变量是否是一种好的做法?_Java_Parameters_Global Variables_Global - Fatal编程技术网

Java 将参数设置为全局变量是否是一种好的做法?

Java 将参数设置为全局变量是否是一种好的做法?,java,parameters,global-variables,global,Java,Parameters,Global Variables,Global,我是一名AP java学生,在从事一个项目时,我想知道使用一个全局变量作为参数是否是一种好的做法。如果你想知道为什么我想把它做好,这样我就不必这么做了: public class Circle { private DrawingTool pen; private SketchPad paper; private double myX; private double myY; private double myWidth; private double myHeight; public Cir

我是一名AP java学生,在从事一个项目时,我想知道使用一个全局变量作为参数是否是一种好的做法。如果你想知道为什么我想把它做好,这样我就不必这么做了:

public class Circle {
private DrawingTool pen;
private SketchPad paper;

private double myX;
private double myY;
private double myWidth;
private double myHeight;

public Circle(double x, double y, double width, double height){
    paper = new SketchPad(500,500);
    pen = new DrawingTool(paper);

    x = myX; //I don't want to have to assign this every time
    y = myY; //like here
    width = myWidth; // and here
    height = myHeight; // and here
   }
}
是否允许仅执行以下操作:

    public Circle(double myX, double myY, double myWidth, double myHeight){
    paper = new SketchPad(500,500);
    pen = new DrawingTool(paper);
   }
}
每次我把参数传递给参数时,它们会自动分配给全局变量吗

每次我把参数传递给参数时,它们会自动分配给全局变量吗


不,Java中没有任何东西可以使“参数到实例变量”(不是真正的“全局”)赋值自动进行。许多IDE都能够为您生成代码,但它确实需要存在。

对象将其状态存储在字段(某些编程语言中的变量)中,并通过方法(某些编程语言中的函数)公开其行为。方法对对象的内部状态进行操作,并作为对象到对象通信的主要机制。隐藏内部状态并要求通过对象的方法执行所有交互称为数据封装,这是面向对象编程的基本原则


来源:

这些不是全局变量,而是实例变量。从常识的角度来看,这似乎不好:每个圆形对象都有自己的画板和绘图工具?如果你想在画板上有更多的圆圈怎么办?@ppeterka66但我认为,因为它们可以通过任何作用域访问,所以它们可以被称为“全局”,而
是私有的
它们只能在包含类中访问。不,它们不能在任何作用域中访问:不能从类中的静态作用域访问,并且没有来自类之外的作用域(除非您有public/protected/package-protected getter方法)。另外,有一件事需要提及:它们不是静态的,因此对象实例是生死攸关的……不,将方法参数命名为实例变量不会自动将它们与实例变量联系起来。相反,这将有效地将实例变量隐藏在方法中,您只需处理形式参数。