静态字段和静态方法
静态字段
如果将一个字段定义为static,每个类只有一个这样的字段。
而对于非静态的实例字段,每个对象都有自己的一个副本。
class Employee
{
private static int nextId = 1;
private int id;
...
}
现在,每个Employee对象都有自己的id字段,但这个类所有实例字段将共享一个nextId字段。
- 在面向对象的语言中,静态字段被称为类字段。术语静态只是沿用了C++的叫法,并无实际意义。
静态方法:
静态方法是不在对象上执行的方法。如Math类的pow方法就是一个静态方法。
Math.pow(x,a)
会计算x的啊次方。
Employee类的静态方法不能访问id的实例字段,因为他不能在对象上执行操作。但是静态方法可以访问静态字段。例如:
public static int getnextId()
{
return nextId;
}
可以提供类名来调用这个方法:
int n = Employee.getNextId();
这个方法可以省略关键字static,但是这样一来,你就需要通过Employee类对象的引用来调用这个方法。
在下面两种情况下可以使用静态方法:
- 方法不需要访问对象状态,因为它需要的所有参数都需要通过显示参数提供(例如 Math.pow)
- 方法只需要访问类的静态方法(例如:Employee.getNextId)。