如果将域定义为static,每个类中只有一个这样的域。而每一个对象对于所有的实例域却都有自己的一份拷贝。例如,假定需要给每一个雇员赋予唯一的标识码。这里给Employee类添加一个实例域id和一个静态域nextId:

  1. class Employee 
  2.     ... 
  3.     private int id; 
  4.     private static int nextId = 1

    现在,每一个雇员对象都有一个自己的id域,但这个类的所有实例将共享一个nextId域。换句话说,如果有1000个Employee类的对象,则有1000个实例域id。但是,只有一个静态域nextId。即使没有一个雇员对象,静态域nextId也存在。它属于类,而不属于任何独立的对象。

    注释:在绝大都数的面向对象程序设计语言中,静态域被称为类域。术语“static”只是沿用了C++的叫法,并无实际意义。

    下面实现一个简单的方法:

  1. public void setId() 
  2.     id = nextId; 
  3.     nextId++; 

    假定为harry设定雇员标识码:

  1. harry.setId(); 

    harry的id域被设置为静态域nextId当前的值,并且静态域nextId的值加1:

  1. harry.id = Employee.nextId; 
  2. Employee.nextId++;