Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第三章:面向对象编程

第三章:面向对象编程

3.2 构造方法与初始化块

3.2.1 构造方法(Constructor)

定义与作用

构造方法是类中用于初始化对象的特殊方法,具有以下特点:

  • 方法名必须与类名完全相同
  • 没有返回类型(连void也不能写)
  • 在创建对象时自动调用
  • 可以重载(一个类可以有多个参数不同的构造方法)

默认构造方法

当类中没有显式定义任何构造方法时,Java会提供一个默认的无参构造方法:

public ClassName() {}

如果定义了至少一个构造方法,则不再提供默认构造方法。

构造方法示例

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;
    }
}

3.2.2 初始化块(Initialization Block)

静态初始化块

  • 使用static关键字修饰
  • 在类加载时执行,且只执行一次
  • 用于初始化静态成员变量
static {
    // 静态初始化代码
}

实例初始化块

  • 不使用static关键字
  • 每次创建对象时都会执行,在构造方法之前执行
  • 用于初始化实例成员变量
{
    // 实例初始化代码
}

初始化块示例

public class Example {
    static int staticVar;
    int instanceVar;
    
    // 静态初始化块
    static {
        staticVar = 10;
        System.out.println("静态初始化块执行");
    }
    
    // 实例初始化块
    {
        instanceVar = 20;
        System.out.println("实例初始化块执行");
    }
    
    public Example() {
        System.out.println("构造方法执行");
    }
}

3.2.3 执行顺序

当创建对象时,各种初始化代码的执行顺序为:

  1. 静态初始化块(只在类加载时执行一次)
  2. 实例初始化块(每次创建对象都执行)
  3. 构造方法(每次创建对象都执行)

3.2.4 this关键字在构造方法中的使用

构造方法中可以使用this关键字:

  1. 调用当前类的其他构造方法(必须放在第一行)
public Person() {
    this("Unknown", 0); // 调用另一个构造方法
}
  1. 区分成员变量和局部变量
public Person(String name, int age) {
    this.name = name;  // this.name指成员变量
    this.age = age;    // name指参数
}

3.2.5 最佳实践

  1. 尽量为类提供显式的构造方法
  2. 复杂的初始化逻辑可以放在初始化块中
  3. 避免在构造方法中调用可被重写的方法
  4. 使用构造方法链(通过this调用其他构造方法)减少代码重复
Last Updated:: 3/27/25, 12:48 PM