如果将域定义为static,每个类中只有一个这样的域。而每一个对象对于所有的实例域却都有自己的一份拷贝。例如,假定需要给每一个雇员赋予唯一的标识码。这里给Employee类添加一个实例域id和一个静态域nextId:
- class Employee
- {
- ...
- private int id;
- private static int nextId = 1;
- }
现在,每一个雇员对象都有一个自己的id域,但这个类的所有实例将共享一个nextId域。换句话说,如果有1000个Employee类的对象,则有1000个实例域id。但是,只有一个静态域nextId。即使没有一个雇员对象,静态域nextId也存在。它属于类,而不属于任何独立的对象。
注释:在绝大都数的面向对象程序设计语言中,静态域被称为类域。术语“static”只是沿用了C++的叫法,并无实际意义。
下面实现一个简单的方法:
- public void setId()
- {
- id = nextId;
- nextId++;
- }
假定为harry设定雇员标识码:
- harry.setId();
harry的id域被设置为静态域nextId当前的值,并且静态域nextId的值加1:
- harry.id = Employee.nextId;
- Employee.nextId++;
转载于:https://blog.51cto.com/mrwucg/1057783