此Java教程适用于JDK 8。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
有关Java SE 9及后续版本中更新的语言功能的摘要,请参见Java语言更改。
有关所有JDK版本的新功能、增强功能以及已删除或已弃用选项的信息,请参见JDK发行说明。
一个类包含用于从类蓝图创建对象的构造方法。构造方法的声明与方法声明相似,只是使用类的名称,并且没有返回类型。例如,Bicycle
有一个构造方法:
public Bicycle(int startCadence, int startSpeed, int startGear) { gear = startGear; cadence = startCadence; speed = startSpeed; }
要创建一个名为myBike
的新Bicycle
对象,需要使用new
运算符调用构造方法:
Bicycle myBike = new Bicycle(30, 0, 8);
new Bicycle(30, 0, 8)
在内存中为对象创建空间,并初始化其字段。
尽管Bicycle
只有一个构造方法,但它可以有其他构造方法,包括无参构造方法:
public Bicycle() { gear = 1; cadence = 10; speed = 0; }
Bicycle yourBike = new Bicycle();
调用无参构造方法创建一个名为yourBike
的新Bicycle
对象。
这两个构造方法可以在Bicycle
中声明,因为它们具有不同的参数列表。与方法一样,Java平台根据列表中的参数数量和类型区分构造方法。对于同一个类,不能编写具有相同数量和类型参数的两个构造方法,因为平台无法区分它们。这样做会导致编译时错误。
你不必为类提供任何构造方法,但在这样做时必须小心。编译器会自动为没有构造方法的任何类提供一个无参的默认构造方法。此默认构造方法将调用超类的无参构造方法。在这种情况下,如果超类没有无参构造方法,编译器会报错,因此你必须验证超类是否具有无参构造方法。如果你的类没有明确的超类,那么它具有一个隐式的超类Object
,它具有一个无参构造方法。
你可以自己使用超类的构造方法。本课程开始时的MountainBike
类就是这样做的。这将在后面关于接口和继承的课程中讨论。
你可以在构造方法的声明中使用访问修饰符来控制哪些其他类可以调用该构造方法。
MyClass
的构造方法,则无法直接创建MyClass
对象。