class class_name { public class_name(){} // 默认无参构造方法 public ciass_name([paramList]){} // 定义构造方法 … // 类主体 }在一个类中,与类名相同的方法就是构造方法。每个类可以具有多个构造方法,但要求它们各自包含不同的方法参数。
public class MyClass { private int m; // 定义私有变量 MyClass() { // 定义无参的构造方法 m = 0; } MyClass(int m) { // 定义有参的构造方法 this.m = m; } }该示例定义了两个构造方法,分别是无参构造方法和有参构造方法。在一个类中定义多个具有不同参数的同名方法,这就是方法的重载。这两个构造方法的名称都与类名相同,均为 MyClass。在实例化该类时可以调用不同的构造方法进行初始化。
提示:无参数的构造方法也被称为 Nullary 构造方法。只有编译程序自动加入的构造方法,才称为默认构造函数。如果自行编写无参数、没有内容的构造函数,就不称为默认构造函数了(只是 Nullary 构造函数)。虽然只是名词定义,不过认证考试时要区别一下两者的不同。
public class Worker { public String name; // 姓名 private int age; // 年龄 // 定义带有一个参数的构造方法 public Worker(String name) { this.name = name; } // 定义带有两个参数的构造方法 public Worker(String name,int age) { this.name = name; this.age = age; } public String toString() { return "大家好!我是新来的员工,我叫"+name+",今年"+age+"岁。"; } }在 Worker 类中定义了两个属性,其中 name 属性不可改变。分别定义了带有一个参数和带有两个参数的构造方法,并对其属性进行初始化。最后定义了该类的 toString() 方法,返回一条新进员工的介绍语句。
public class TestWorker { public static void main(String[] args) { System.out.println("-----------带有一个参数的构造方法-----------"); // 调用带有一个参数的构造方法 Worker worker1 = new Worker("张强"); System.out.println(worker1); System.out.println("-----------带有两个参数的构造方法------------"); // 调用带有两个参数的构造方法 Worker worker2 = new Worker("李丽",25); System.out.println(worker2); } }在上述代码中,创建了两个不同的 Worker 对象:一个是姓名为张强的员工对象,一个是姓名为李丽、年龄为 25 的员工对象。对于第一个 Worker 对象 Worker1,并未指定 age 属性值,因此程序会将其值采用默认值 0。对于第二个 Worker 对象 Worker2,分别对其指定了 name 属性值和 age 属性值,因此程序会将传递的参数值重新赋值给 Worker 类中的属性值。
Worker worker("张三",12);这条语句在 C++ 中能够正常运行,但在 Java 中却不行。
-----------带有一个参数的构造方法----------- 大家好!我是新来的员工,我叫张强,今年0岁。 -----------带有两个参数的构造方法------------ 大家好!我是新来的员工,我叫李丽,今年25岁。通过调用带参数的构造方法,在创建对象时,一并完成了对象成员的初始化工作,简化了对象初始化的代码。
本文链接:http://task.lmcjl.com/news/10534.html