Java构造方法详解:从入门到实战

embedded/2025/3/16 17:27:57/

目录

一、什么是构造方法?

二、构造方法的作用

三、构造方法分类与使用

1. 默认构造方法

2. 有参构造方法

3. 构造方法重载

四、注意事项(避坑指南)

五、经典面试题解析

六、实战应用场景

七、总结


一、什么是构造方法?

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

  • 方法名与类名完全相同

  • 没有返回值类型(连void都不需要)

  • 在创建对象时通过new关键字自动调用

  • 支持重载(多个不同参数的构造方法)

    java">public class Student {// 构造方法public Student() {System.out.println("调用了无参构造方法");}
    }

    二、构造方法的作用

  • 对象初始化:为对象属性设置初始值

  • 强制参数校验:确保对象创建时具备必要属性

  • 资源分配:初始化数据库连接、文件句柄等资源


三、构造方法分类与使用

1. 默认构造方法

当类中没有显式定义构造方法时,编译器会自动生成无参构造方法:

java">Student stu = new Student(); // 调用默认构造方法

2. 有参构造方法

java">public class Student {private String name;// 有参构造方法public Student(String name) {this.name = name; // 使用this区分成员变量}
}

3. 构造方法重载

java">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()必须放在子类构造方法的首行
java">public class Undergraduate extends Student {public Undergraduate() {super(); // 必须调用父类构造方法// 其他初始化代码...}
}

私有构造方法

  • 用于单例模式或工具类(禁止实例化)

java">public class UtilityClass {private UtilityClass() {throw new AssertionError(); // 防止反射调用}
}
  • 构造方法不能被子类重写,但可以重载


五、经典面试题解析

Q:以下代码输出什么?为什么? 

java">public class Test {public Test() {System.out.println("构造方法");}public void Test() {System.out.println("普通方法");}public static void main(String[] args) {new Test().Test();}
}

答案

java">构造方法
普通方法

 解析Test()方法是构造方法,而void Test()是普通方法,二者可以共存但后者不符合规范,容易造成混淆。


六、实战应用场景

对象克隆:通过构造方法实现深拷贝

java">public Student(Student origin) {this.name = origin.name;this.age = origin.age;
}

构建者模式:处理复杂对象初始化

java">public Student(Builder builder) {this.name = builder.name;this.age = builder.age;
}

七、总结

  • 构造方法是面向对象编程的核心概念

  • 合理使用构造方法重载可以提高代码灵活性

  • 注意与普通方法的区别及继承中的调用规则

  • 推荐使用IDEA的Alt+Insert快捷键快速生成构造方法


http://www.ppmy.cn/embedded/173119.html

相关文章

2025-03-15 学习记录--C/C++-PTA 练习3-4 统计字符

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 练习3-4 统计字符 本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、…

软考中级设计模式实战宝典:核心意图解析+适用场景+完整源码下载+高频题库

简介: 备战软考中级软件设计师,设计模式模块占分高、考点深?本文专为高效备考打造! 直击考点:逐条解析23种设计模式的核心意图与适用场景,搭配UML类图快速理解模式本质,告别抽象理论。代码实战…

Linux内核中断管理总

Linux内核中断管理总 参考博文 linux IRQ Management(七)- 中断处理流程

【C++】 —— 笔试刷题day_3

刷题_day3 继续加油!!! 一、简写单词 题目链接:简写单词 题目描述 这道题比较简单,题目说的也非常简单明了 输入一行复合词,要求我们输出每个单词的首字母大写。 算法思路 这里我们可以看到输入的复合词…

opencv-显示图片

安装软件 sudo apt install python3 //确保虚拟机只有python3 ln -sf /usr/bin/python3.6 /usr/bin/python sudo apt install python3-pip pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple pip install opencv-contrib-python -i https://pypi.tuna…

Python中的静态方法如何使用?

在Python里,类当中的方法可以分为多种不同的类型,其中staticmethod是一个十分有趣而又实用的功能。我们来好好地聊一聊什么是静态方法,它的用途是什么,以及如何在实际应用中使用它们! 首先,定义一下静态方…

UBuntu24.04-JDK7-TOMCAT7安装

jdk7 apt-get 找不到。 tomcat7 也没找到。 以下是安装成功的,供大家参考。 1.JAVA openjdk-7-jdk /usr/lib/jvm/java-7-openjdk-amd641.安装指定版本apt search jdk //查找版本sudo apt install default-jdk //此为默认版本sudo apt install ope…

Java版本切换~Linux

Java版本切换~Linux 来自: Ultra~你过来啊 浅木先生 2025年03月13日 12:46 环境情况: centos7 服务器, 已经使用 yum 方式安装过 java1.8 与 java11 安装方式可参照: https://wx.zsxq.com/columns/15552425251112?…