前言
本文是橙子出于兴趣爱好对Java官方教程的尝试翻译,几乎每日更新,感兴趣的朋友可以关注一下橙子;翻译过程中尽可能多的对一些关键词保留了英文原文,如果你想看最纯正的英文原版教材却又看不懂,可以试着来看一下橙子的翻译版啊,欢迎大家留言讨论,冲鸭!
更多相关文章点击阅读
Java官方教程目录2021最新版
Providing Constructors for Your Classes 提供构造方法
一个类包含构造方法,构造方法用来根据类的蓝图创建对象。构造方法的声明类似于方法的声明,不同之处在于构造方法使用类的名称,并且没有返回类型。例如,Bicycle类的一个构造方法:
java">public Bicycle(int startCadence, int startSpeed, int startGear) {
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}
要创建一个名为myBike的新Bicycle对象,则需要用new 运算符调用构造方法:
java">Bicycle myBike = new Bicycle(30, 0, 8);
new Bicycle(30, 0, 8)在内存中为对象开辟空间并且实例化(initializes)其字段(fields)。
一个类可以包含多个构造函数,包括无参构造:
java">public Bicycle() {
gear = 1;
cadence = 10;
speed = 0;
}
Bicycle yourBike = new Bicycle();调用无参构造创建一个叫作yourBike的新对象。
上方的两个构造函数都可以在Bicycle类中声明,因为它们有不同的参数列表。与方法一样,Java语言根据列表中参数的数量和类型来区分构造方法。如果在一个类中编写两个参数数量和类型相同的构造方法,将会造成编译时错误(compile-time error)。
可以不为一个类提供任何构造函数,编译器将自动为没有任何构造函数的类提供无参构造。该默认构造方法将调用父类的无参构造方法。如果父类没有无参构造方法,编译器将会报错,因此在这种情况下必须验证父类是否拥有构造函数。如果一个类没有显式的父类,则它有一个隐式的父类——object,object类有无参构造。
一个类可以使用超类的构造函数,将在后续的接口和继承的课程中进行讨论。
可以在构造函数的声明中使用访问修饰符,以此来控制其它哪些类可以调用构造函数。
注意:如果一个类不能调用MyClass的构造函数,则它不能直接创建MyClass的对象。