从另一个类

时间:2017-06-08 02:26:25

标签: 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 File
public class SecondClass{}

我想从类SecondClass访问变量x,据我所知,有两种方法可以做到这一点。

  1. 在SecondClass类中我可以简单地做FirstClass.x --->做东西。 IntelliJ允许我这样做,因为x具有公共可见性。

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

  3. 访问SecondClass

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

    道歉,如果我的例子不够抽象,但我尽量做到尽可能多。

    提前致谢。

2 个答案:

答案 0 :(得分:0)

  1. 您可以通过x访问Second Class中的变量FirstClass.x,因为我认为您已将x声明为静态。否则,你不能这样访问。然后你必须创建First Class的对象,然后你必须访问该变量x

  2. 不要在Second Class的构造函数中传递该类。只需传递变量x即可。这会更好。如果我们通过课程,那么我们可以从Second Class做很多事情。因此,我们将提供第二类所需的数据。

    SecondClass sc = new SecondClass(x);

答案 1 :(得分:0)

public class FirstClass {
    int x;
    ...... 
    public int getX(){
        return x;
    }
}

没有魔法。它是由java规范。 Controlling Access to Members of a Class

  

四个访问级别是 -

     
      
  • 可见包,默认。不需要修饰符。
  •   
  • 仅对班级(私人)可见
  •   
  • 世界可见(公众)
  •   
  • 对包和所有子类(受保护的)
  • 可见   

您的案例int x;具有默认访问权限。某个包中的所有类都可以访问它。

  

public int getX()

你可以在你的项目中随处获得x变量。

FirstClass fc = new FirstClass(); int value = fc.getX();

你应该在你班级以外的90%的情况下使用这种(调用方法而不是直接x)方法,并且在课堂内使用10%getX()。可能存在测试的情况,getX()的一些额外逻辑 - 但这是通常的做法,而不是在你的情况下