|
|
|
JAVA程序员必读:基础篇(2)面向对象编程概念
|
|
编译:ZSC/太平洋网络学院
|
|
|
2.4实例和类成员
2.4.1理解实例和类成员
为了指定一个成员变量为一个类变量,你可以使用static关键字。比如,我们可以修改一下上面的AnIntegerNamedX类,使得x变量现在是一个类变量:
class AnIntegerNamedX {
static int x;
public int x() {
return x;
}
public void setX(int newX)
{
x = newX;
}
}
现在设置它们的x数值并显示不同的输出:
myX.x = 2
anotherX.x = 2
这次的输出不同,是因为x现在是一个类变量,所以就只有这个变量的副本,它是被AnIntegerNamedX的所有实例所共享的,包括myX和anotherX。当你在其它实例中调用setX的时候,你可以为所有的AnIntegerNamedX的所有实例改变x的数值。
同样,当我们声明一个方法的时候,你可以指定方法为类方法而不是实例方法。类方法只可以在类变量中进行操作,并且不能访问定义在类中的所有实例变量。
为了指定方法为类方法,你可以在方法声明处使用static关键字。下面,我们再次来修改AnIntegerNamedX类,使它的成员变量x为一个实例变量,以及它的两个方法为类方法:
class AnIntegerNamedX {
int x;
static public int x() {
return x;
}
static public void setX(int
newX) {
x = newX;
}
}
当你想编译这个版本的AnIntegerNamedX,编译器就会显示如下的错误: AnIntegerNamedX.java:4:
Can't make a static reference to
nonstatic variable x in class
AnIntegerNamedX.
return x;
^
出现这些错误的原因是类方法不能访问实例变量,除非方法先创建AnIntegerNamedX的一个实例并且通过它来访问变量。
[上一页]
[下一页]
|
|
|