java如何构造函数
构造函数的基本概念
构造函数是类中用于初始化对象的特殊方法,名称与类名相同,无返回值(连void也不写)。当创建对象时,构造函数自动调用。
默认构造函数
若未显式定义构造函数,Java会提供默认的无参构造函数(若已定义任何构造函数,则不再提供默认构造)。
public class Person {
// 默认构造(隐式存在,若未定义其他构造)
}
自定义构造函数
通过参数化构造实现灵活的对象初始化。

public class Person {
private String name;
private int age;
// 自定义构造
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
构造重载
支持多个构造函数,通过不同参数列表区分。
public class Person {
private String name;
private int age;
// 无参构造
public Person() {
this.name = "Unknown";
this.age = 0;
}
// 带参构造
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
构造调用构造
使用this()在同一类中调用其他构造函数,需置于首行。

public class Person {
private String name;
private int age;
public Person() {
this("Unknown", 0); // 调用带参构造
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
继承中的构造函数
子类构造默认调用父类无参构造(通过super()),若父类无无参构造,需显式调用父类构造。
public class Animal {
public Animal(String type) {
System.out.println("Animal: " + type);
}
}
public class Dog extends Animal {
public Dog() {
super("Canine"); // 必须显式调用父类构造
System.out.println("Dog initialized");
}
}
私有构造函数
用于单例模式或工具类,防止外部实例化。
public class Singleton {
private static Singleton instance;
private Singleton() {} // 私有构造
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
构造与初始化块
初始化块在每次构造调用前执行,静态块在类加载时执行一次。
public class Example {
{
System.out.println("初始化块"); // 实例化时执行
}
static {
System.out.println("静态块"); // 类加载时执行
}
public Example() {
System.out.println("构造方法");
}
}






