[英]Accessing a class' member variable from another class
考虑以下示例:
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,据我所知有两种方法可以做到这一点。
在SecondClass类中,我可以简单地执行FirstClass.x --->进行操作。 由于x具有公开可见性,因此IntelliJ允许我执行此操作。
我让SecondClass的构造函数将FirstClass fc作为参数,然后执行此操作。 在类声明后将其声明为成员变量。 然后,在主要我将SecondClass的实例更改为SecondClass sc = new SecondClass(this); 现在我可以通过fc.getX()访问SecondClass了;
两者之间有什么区别?在这种情况下我从未见过解释?
抱歉,如果我的示例不够抽象,但我尝试尽可能地使其抽象。
提前致谢。
您可以通过FirstClass.x
从Second Class访问变量x
,因为我认为您已将x
声明为静态。 否则,您将无法像这样访问。 然后,您必须创建一个First Class对象,然后必须访问该变量x
。
不要在Second Class的构造函数中传递该类。 只需传递变量x
。 这样会更好。 如果我们通过了课堂,那么我们可以从第二课堂做很多事情。 因此,我们将提供“第二类”所需的那些数据。
SecondClass sc =新的SecondClass(x);
public class FirstClass {
int x;
......
public int getX(){
return x;
}
}
没有魔力。 这是通过Java规范。 控制对班级成员的访问
四个访问级别是-
- 包可见,默认。 不需要修饰符。
- 仅对班级可见(私人)
- 对世界可见(公共)
- 对包和所有子类可见(受保护)
您的案例int x;
具有默认访问权限。 某些软件包中的所有类都可以访问它。
公共诠释getX()
您可以在项目中的任何地方获取x变量。
FirstClass fc =新的FirstClass(); int值= fc.getX();
在类外90%的情况下以及类内10%的getX()情况下,应完全使用此(调用方法而不是直接x)方法。 可能会有测试的情况,还有getX()的一些额外逻辑-但这是惯例,而不是您的情况
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.