由于类的构造器方法可以重载,所以可以采用多种形式设置类的实例域的初始状态。确保不管怎样调用构造器,每个实例域都可以被设置为一个有意义的初值。这是一个很好的设计习惯。

    可以在类定义中,直接将一个值赋给任何域。例如:

 
  
  1. class Employee 
  2.     .... 
  3.     private String name = ""

    在执行构造器之前,先执行赋值操作。当一个类的所有构造器都希望把相同的值赋予某个特定的实例域时,这种方式特别有用。

    初始值不一定是常量。在下面的例子中,可以调用方法对域进行初始化。仔细看一下Employee类,其中每个雇员有一个id域。可以使用下列方式进行初始化:

 
  
  1. class Employee 
  2.     .... 
  3.     static int assignId() 
  4.     { 
  5.         int r = nextId; 
  6.         nextId++; 
  7.         return r; 
  8.     } 
  9.     .... 
  10.     private int id = assignId(); 

    C++注释:在C++中,不能直接初始化实例域。所有的域必须在构造器中设置。但是,有一个特殊的初始化器列表语法,如下所示:

 
  
  1. Employee::Employee(String n, double s, int y, int m, int d)    //C++ 
  2. : name(n), salary(s), hireDay(y, m, d) 

C++使用这种特殊的语法来调用构造器。在Java中没有这种必要,因为对象没有子对象,只有指向其他对象的指针。