这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。
为类提供构造器
类包含构造器,调用构造器能够为类创建对象。构造器声明看起来与方法声明一样 - 除了使用类名命名和没有返回值之外。例如,Bicycle 有一个构造器:
public Bicycle(int startCadence,int startGear,int startSpeed){
gear = startGear;
speed = startSpeed;
cadence = startCadence;
}
为了创建一个叫做 myBike 的 Bicycle 的对象,可以使用 new 操作符来调用构造器。
Bicycle myBike = new Bicycle(30,8,0);
new Bicycle(30,8,0) 为对象在内存中申请空间并初始化它。
尽管 Bicycle 仅仅只有一个构造器,它其实也可以有另外的构造器,比如无参构造器。
public Bicycle(){
gear = 1;
cadence = 100;
speed = 0;
}
Bicycle yourBike = new Bicycle(); 调用无参构造器创建了一个叫做yourBike的Bicycle 对象。
在Bicycle类中这些构造器都应该被声明因为它们有不同的参数列表。和方法一样,Java平台区分构造器是基于参数的数目和类型。
你不必为类提供任何构造器,但这样做时一定要小心。编译器将自动为没有提供构造器的类提供无参构造器。默认构造器将会调用父类的无参构造器,在这种情况下,当编译器发现父类没有无参构造器时会报错,所以要验证它。如果你的类没有显示指明父类,它隐含一个父类是Object,它有一个无参构造器。
你也可以自己来使用父类的构造器。上面示例中的MountainBike 类就是这样做的。这个问题将在后续的课程中讨论。
你可以在构造器的声明上使用访问修饰符,这样来控制其他类是否可以访问该构造器。
注意:如果一个类不能访问 MyClass 构造器,那它就不能直接创建 MyClass 对象。