静态字段与静态方法
之前我们都定义的main
方法都被标记了static
修饰符,那到底是什么意思?下面我们来看看
静态字段
如果将一个字段定义为static
,每个类只有一个这样的字段。而对于非静态的实例字段,每个对象都有自己的一个副本。例如,假设需要给每一个员工赋予唯一的标识码。这里给Employee
类添加一个实例字段id和一个静态字段nextId
:
highlighter- Java
class Employee {
// 定义静态字段nextId
private static int nextId = 1;
private int id;
}
现在,每一个Employee
对象都有一个自己的id字段,但这个类的所有实例将共享一个nextId
字段。换句话说,如果有1000个Employee
类对象,则有1000个实例字段id,分别对应每一个对象。但是,只有一个静态字段nextId
。即使没有Employee
对象,静态字段nextId
也存在。它属与类,而不属于任何单个的对象。
下面实现一个简单的方法:
highlighter- Java
public void setId() {
id = nextId;
nextId++;
}
假定为harry设置员工标识码:
highlighter-
harry.setId();
harry的id字段被设置为静态字段nextId
当前的值,并且静态字段nextId
的值加1:
highlighter- Python
harry.id = Employee.nextId;
Employee.nextId++
静态常量
静态变量使用的比较少,但静态常量却很常用。例如,在Math类中定义一个静态常量:
highlighter- Java
public clas