|
JAVA程序员必读:基础篇(5)---类和继承
|
|
编译:ZSC/太平洋网络学院
|
|
|
5.1.7 理解实例和类成员
为了指定方法为一个类方法,你可以在方法声明的地方使用static关键字。现在我们改变一下AnIntegerNamedX类,比如它的成员变量x为实例变量,以及它的两个方法为类方法:
class AnIntegerNamedX {
int x;
static public int x() {
return x;
}
static public void setX(int newX) {
x = newX;
}
}
当我们编译这个修改过的AnInterNamedX的时候,编译器就给出以下的错误:
AnIntegerNamedX.java:4: Can't make a static reference
to
nonstatic variable x in class AnIntegerNamedX.
return x;
^
出现这个错误的原因是类方法不能访问实例变量,除非方法首先创建AnIntergerNamedX的实例并且通过它来访问变量。
下面再修改AnIntegerNamedX,使x变量为一个类变量:
class AnIntegerNamedX {
static int x;
static public int x() {
return x;
}
static public void setX(int newX) {
x = newX;
}
}
现在类就可以编译了,它是在创建AnIntegerNamedX两个实例之前设置了它们的x数值并打印出来:
myX.x = 2
anotherX.x = 2
实例成员和类成员之间的另外不同点是类成员可以在类本身中访问。你不必实例化一个类来访问类成员。下面再对上面的代码进行修改:
. . .
AnIntegerNamedX.setX(1);
System.out.println("AnIntegerNamedX.x = " + AnIntegerNamedX.x());
. . .
这里注意你不再需要创建myX和anotherX。你可以直接从AnIntegerNamedX中设置x并检索x。而你不能这样来处理实例成员,你可以从对象中只调用实例方法。你可以从类的实例或者从类本身访问类变量和方法。
[上一页]
[下一页]
|