Java 访问类';来自另一个类的成员变量
考虑这个例子:Java 访问类';来自另一个类的成员变量,java,Java,考虑这个例子: public class FirstClass { public static int x; public static void main(String[] args){ x = 5; SecondClass sc = new SecondClass(); } public int getX(){ return x; } } //assume class SecondClass is in another Fi
public class FirstClass {
public static int x;
public static void main(String[] args){
x = 5;
SecondClass sc = new SecondClass();
}
public int getX(){
return x;
}
}
//assume class SecondClass is in another File
public class SecondClass{}
我想从SecondClass类访问变量x,据我所知,有两种方法可以做到这一点
FirstClass.x
从第二类访问变量x
,因为我认为您已经声明x
为静态变量。否则,您不能像那样访问。然后您必须创建一个第一类的对象,然后您必须访问该变量x
x
。这样会更好。如果我们通过了这门课,那么我们可以在第二节课上做很多事情。因此,我们将提供第二课堂所需的数据
二级sc=新二级(x)- 默认情况下,对包可见。不需要修改器
- 仅对类可见(专用)
- 世界可见(公众)
- 对包和所有子类可见(受保护)
intx代码>具有默认访问权限。某个包中的所有类都可以访问它
公共int getX()
您可以在项目中的任何位置获得x变量
FirstClass fc=新的FirstClass();
int value=fc.getX()
在类外90%的情况下,以及在类内10%的情况下,应该使用这种方法(调用方法而不是直接x)。可能会有一些测试案例,一些getX()的额外逻辑——但这是常见的做法,而不是在您的案例中您是正确的。当从我的程序中抽象出这个例子时,我错过了这个。我已经更正了我原来的帖子。关于你的2。评论,你能详细说明为什么会更好吗?另外,如果我想访问多个变量呢?更好的方法是传递所有变量,而不是传递类本身?如果变量不是常量,则不需要使其成为静态变量;只需编写私有int x;在这种情况下,您将对x变量的访问限制在classvariable之外,x变量是从静态main方法访问的。因此,变量x必须是静态的。@curiosityisblish,如果你想访问多个变量,那么你也可以考虑继承;但是getter属于头等舱!至于可见性,谢谢,我理解了。所以你建议只在main方法中创建一个第一类实例,然后用getter访问x?如果是,当我想从SecondClass访问它时,这对我有什么帮助当您使用静态和公共访问或默认情况下您对变量有直接访问权限时。如果它是一个简单的程序,你可以做到这一点。但是你可以在你的程序中的任何地方改变x变量,它并不能让你访问x,但你不能改变它。这是读访问。要具有写访问权限,应添加set方法
public class FirstClass {
int x;
......
public int getX(){
return x;
}
}