文档

Java™ 教程
隐藏目录
为类提供构造函数
路径:学习Java语言
课程:类和对象
章节:

为您的类提供构造函数

一个类包含用于从类蓝图创建对象的构造方法。构造方法的声明与方法声明相似,只是使用类的名称,并且没有返回类型。例如,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对象。

上一页: 定义方法
下一页: 将信息传递给方法或构造函数