繁体   English   中英

从另一个类访问一个类的成员变量

[英]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,据我所知有两种方法可以做到这一点。

  1. 在SecondClass类中,我可以简单地执行FirstClass.x --->进行操作。 由于x具有公开可见性,因此IntelliJ允许我执行此操作。

  2. 我让SecondClass的构造函数将FirstClass fc作为参数,然后执行此操作。 在类声明后将其声明为成员变量。 然后,在主要我将SecondClass的实例更改为SecondClass sc = new SecondClass(this); 现在我可以通过fc.getX()访问SecondClass了;

两者之间有什么区别?在这种情况下我从未见过解释?

抱歉,如果我的示例不够抽象,但我尝试尽可能地使其抽象。

提前致谢。

  1. 您可以通过FirstClass.x从Second Class访问变量x ,因为我认为您已将x声明为静态。 否则,您将无法像这样访问。 然后,您必须创建一个First Class对象,然后必须访问该变量x

  2. 不要在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM