4.3.4 从构造器开始

下面先看看Employee类的构造器:

可以看到,构造器与类同名。在构造Employee类的对象时,构造器会运行,以便将实例域初始化为所希望的状态。

例如,当使用下面这条代码创建Employee类实例时:

将会把实例域设置为:

构造器与其他的方法有一个重要的不同。构造器总是伴随着new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。例如,

将产生编译错误。

本章稍后,还会更加详细地介绍有关构造器的内容。现在只需要记住:

●构造器与类同名

●每个类可以有一个以上的构造器

●构造器可以有0个、1个或多个参数

●构造器没有返回值

●构造器总是伴随着new操作一起调用

C++注释:Java构造器的工作方式与C++一样。但是,要记住所有的Java对象都是在堆中构造的,构造器总是伴随着new操作符一起使用。C++程序员最易犯的错误就是忘记new操作符:

这条语句在C++中能够正常运行,但在Java中却不行。

警告:请注意,不要在构造器中定义与实例域重名的局部变量。例如,下面的构造器将无法设置salary。

这个构造器声明了局部变量name和salary。这些变量只能在构造器内部访问。这些变量屏蔽了同名的实例域。有些程序设计者(例如,本书的作者)常常不假思索地写出这类代码,因为他们已经习惯增加这类数据类型。这种错误很难被检查出来,因此,必须注意在所有的方法中不要命名与实例域同名的变量。