我可以想象3型能见度变量的(但我认为有更多):如何控制Java中变量的可见性?
变量被使用的方法中,该变量的值的任何改变是不可见的,从该方法的外部(所以它是本地的特定方法)。
一个变量对类是局部的,这意味着它从类的outisde中是不可见的。但是,类的任何方法都可以轻松查看和更改此变量的值,而无需在方法的参数列表中给出该变量(因此它在类中是全局类型的)。
变量可以通过“objectName.variableName”访问。
如何声明这些不同类型的变量?
我可以想象3型能见度变量的(但我认为有更多):如何控制Java中变量的可见性?
变量被使用的方法中,该变量的值的任何改变是不可见的,从该方法的外部(所以它是本地的特定方法)。
一个变量对类是局部的,这意味着它从类的outisde中是不可见的。但是,类的任何方法都可以轻松查看和更改此变量的值,而无需在方法的参数列表中给出该变量(因此它在类中是全局类型的)。
变量可以通过“objectName.variableName”访问。
如何声明这些不同类型的变量?
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;
}
}
不要忘记,首先省略修饰符使其成为私有包。这使得它在课堂外可见,但只能在本地包中使用(这非常有用)。 http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html – 2010-03-07 19:26:46
事实上,这个问题并没有涵盖用例:) – Brabster 2010-03-07 19:32:58
其实 - 现在你提到它@克里斯丹尼特,我不得不承认,我从来没有必要使用私人包。我一直认为它引入了对包结构的不必要的依赖,并且用处非常有限。还有一个关于这一点的SO问题,你可能想要发布一个答案,如果你有没有涵盖的用例:) – Brabster 2010-03-07 19:36:43
1:只是像int i;
方法中
2:使用private
改性剂或改性剂protected
3:使用public
重要的是要记住:如果你在一个类中声明了一个变量,并且不使用任何访问修饰符,它将是包私有的。这意味着从同一包中的其他类可以引用objectname.variable,而从其他包中的类不能。
“(所以它在类中是全局的)”:一个真正的“全局”是一个“静态”变量。 – Pindatjuh 2010-03-07 19:27:16
需要注意的是,3通常被认为是一个坏主意。 – brian 2010-03-07 19:27:51