如何控制Java中变量的可见性?

时间:2010-03-07 19:21:24

标签: java variables global visibility local

我可以想象变量的3种可见性(但我认为还有更多):

  1. 在方法中使用变量,并且从方法外部看不到此变量值的任何更改(因此它对于特定方法是本地的)。

  2. 变量是类的本地变量,这意味着它从类的外部是不可见的。但是,类的任何方法都可以轻松查看和更改此变量的值,而无需在方法的参数列表中提供变量(因此它在类中是全局的)。

  3. 变量可以通过“objectName.variableName”访问。

  4. 如何声明这些不同类型的变量?

3 个答案:

答案 0 :(得分:3)

1)方法中声明的任何变量仅在该方法中可见。 (方法本地)。程序员别无选择。

2)使用修饰符private声明的任何变量仅在其被声明的类的实例中可见。

3)public变量可以从任何具有object.variable的类访问;可以通过这种方式从子类访问protected个变量; private变量只能在声明变量的类的实例中以这种方式访问​​。

有关详情和参考,请参阅Java Learning Trail on Sun's website

但是:将类成员(变量)暴露给其他类是不好的做法,应该使用方法启用访问,例如:

public class MyClass {
  private int myInt;

  public int getMyInt() {
    return myInt;
  }

  public void setMyInt(int newInt) {
    myInt = newInt;
  }
}

答案 1 :(得分:2)

重要的是要记住:如果在类中声明一个变量而不使用任何访问修饰符,那么它将是package-private。这意味着从同一个包中的其他类可以使用 objectname.variable 引用它,而不能从其他包中的类引用它。

答案 2 :(得分:0)

1:方法

中的int i;之类的东西

2:使用private修饰符或protected修饰符

3:使用public