目录
一、什么是构造方法?
二、构造方法的作用
三、构造方法分类与使用
1. 默认构造方法
2. 有参构造方法
3. 构造方法重载
四、注意事项(避坑指南)
五、经典面试题解析
六、实战应用场景
七、总结
一、什么是构造方法?
构造方法(Constructor)是Java类中用于初始化对象的特殊方法,具有以下特点:
-
方法名与类名完全相同
-
没有返回值类型(连void都不需要)
-
在创建对象时通过
new
关键字自动调用 -
支持重载(多个不同参数的构造方法)
复制public class Student { // 构造方法 public Student() { System.out.println("调用了无参构造方法"); } }
二、构造方法的作用
-
对象初始化:为对象属性设置初始值
-
强制参数校验:确保对象创建时具备必要属性
-
资源分配:初始化数据库连接、文件句柄等资源
三、构造方法分类与使用
1. 默认构造方法
当类中没有显式定义构造方法时,编译器会自动生成无参构造方法:
Student stu = new Student(); // 调用默认构造方法
复制
2. 有参构造方法
public class Student { private String name; // 有参构造方法 public Student(String name) { this.name = name; // 使用this区分成员变量 } }
复制
3. 构造方法重载
public class Student { private String name; private int age; // 无参构造 public Student() { this("默认姓名"); // 调用其他构造方法 } // 单参数构造 public Student(String name) { this(name, 18); } // 全参数构造 public Student(String name, int age) { this.name = name; this.age = age; } }
复制
四、注意事项(避坑指南)
继承中的构造方法:
- 子类构造方法必须调用父类构造方法(通过
super()
) super()
必须放在子类构造方法的首行
public class Undergraduate extends Student { public Undergraduate() { super(); // 必须调用父类构造方法 // 其他初始化代码... } }
复制
私有构造方法:
-
用于单例模式或工具类(禁止实例化)
public class UtilityClass { private UtilityClass() { throw new AssertionError(); // 防止反射调用 } }
复制
-
构造方法不能被子类重写,但可以重载
五、经典面试题解析
Q:以下代码输出什么?为什么?
public class Test { public Test() { System.out.println("构造方法"); } public void Test() { System.out.println("普通方法"); } public static void main(String[] args) { new Test().Test(); } }
复制
答案:
构造方法 普通方法
复制
解析:Test()
方法是构造方法,而void Test()
是普通方法,二者可以共存但后者不符合规范,容易造成混淆。
六、实战应用场景
对象克隆:通过构造方法实现深拷贝
public Student(Student origin) { this.name = origin.name; this.age = origin.age; }
复制
构建者模式:处理复杂对象初始化
public Student(Builder builder) { this.name = builder.name; this.age = builder.age; }
复制
七、总结
-
构造方法是面向对象编程的核心概念
-
合理使用构造方法重载可以提高代码灵活性
-
注意与普通方法的区别及继承中的调用规则
-
推荐使用IDEA的
Alt+Insert
快捷键快速生成构造方法