2010-03-07 52 views
1

我可以想象3型能见度变量的(但我认为有更多):如何控制Java中变量的可见性?

  1. 变量被使用的方法中,该变量的值的任何改变是不可见的,从该方法的外部(所以它是本地的特定方法)。

  2. 一个变量对类是局部的,这意味着它从类的outisde中是不可见的。但是,类的任何方法都可以轻松查看和更改此变量的值,而无需在方法的参数列表中给出该变量(因此它在类中是全局类型的)。

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

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

+0

“(所以它在类中是全局的)”:一个真正的“全局”是一个“静态”变量。 – Pindatjuh 2010-03-07 19:27:16

+0

需要注意的是,3通常被认为是一个坏主意。 – brian 2010-03-07 19:27:51

回答

3

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

2)与所述改性剂声明的任何变量private是可见只有从它在delared该类的实例内

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; 
    } 
} 
+0

不要忘记,首先省略修饰符使其成为私有包。这使得它在课堂外可见,但只能在本地包中使用(这非常有用)。 http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html – 2010-03-07 19:26:46

+0

事实上,这个问题并没有涵盖用例:) – Brabster 2010-03-07 19:32:58

+0

其实 - 现在你提到它@克里斯丹尼特,我不得不承认,我从来没有必要使用私人包。我一直认为它引入了对包结构的不必要的依赖,并且用处非常有限。还有一个关于这一点的SO问题,你可能想要发布一个答案,如果你有没有涵盖的用例:) – Brabster 2010-03-07 19:36:43

0

1:只是像int i;方法中

2:使用private改性剂或改性剂protected

3:使用public

2

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