Java 构造方法详解
1. 什么是构造方法构造方法Constructor是 Java 中一种特殊的方法用于在创建对象时初始化对象的状态。它的名称必须与类名完全相同并且没有返回类型连 void 也没有。2. 构造方法的特性与类同名构造方法的名称必须与所在类的名称完全一致。无返回类型构造方法不能声明返回类型包括 void。自动调用使用new关键字创建对象时构造方法会被自动调用。支持重载一个类可以有多个构造方法只要参数列表不同即可。默认构造方法如果一个类没有定义任何构造方法编译器会自动提供一个无参的默认构造方法。3. 构造方法的类型3.1 无参构造方法不接收任何参数的构造方法用于创建对象并赋予默认值。public class Person { private String name; private int age; // 无参构造方法 public Person() { this.name Unknown; this.age 0; } }3.2 有参构造方法接收参数的构造方法用于在创建对象时初始化特定属性。public class Person { private String name; private int age; // 有参构造方法 public Person(String name, int age) { this.name name; this.age age; } }3.3 默认构造方法当类中没有显式定义任何构造方法时Java 编译器会自动生成一个无参构造方法。public class Person { private String name; private int age; // 编译器会自动生成public Person() {} }4. 构造方法的使用示例public class Student { private String id; private String name; private int score; // 无参构造方法 public Student() { this.id 0000; this.name New Student; this.score 60; } // 有参构造方法 public Student(String id, String name) { this.id id; this.name name; this.score 0; } // 全参构造方法 public Student(String id, String name, int score) { this.id id; this.name name; this.score score; } public void display() { System.out.println(学号 id 姓名 name 分数 score); } public static void main(String[] args) { // 使用无参构造方法 Student s1 new Student(); s1.display(); // 使用有参构造方法 Student s2 new Student(1001, 张三); s2.display(); // 使用全参构造方法 Student s3 new Student(1002, 李四, 95); s3.display(); } }5. 构造方法的重载构造方法支持重载即一个类中可以有多个构造方法只要它们的参数列表不同参数类型、参数个数或参数顺序不同。public class Rectangle { private double width; private double height; // 无参构造方法 public Rectangle() { this.width 1.0; this.height 1.0; } // 单参构造方法 public Rectangle(double side) { this.width side; this.height side; } // 双参构造方法 public Rectangle(double width, double height) { this.width width; this.height height; } public double getArea() { return width * height; } }6. this 关键字在构造方法中的使用6.1 引用当前对象属性使用this关键字区分成员变量和局部变量。public class Employee { private String name; private double salary; public Employee(String name, double salary) { this.name name; // this.name 指成员变量 this.salary salary; // this.salary 指成员变量 } }6.2 调用其他构造方法使用this()在一个构造方法中调用同一个类的另一个构造方法必须放在第一行。public class Book { private String title; private String author; private double price; // 无参构造方法 public Book() { this(未知书名, 未知作者, 0.0); } // 双参构造方法 public Book(String title, String author) { this(title, author, 29.9); } // 全参构造方法 public Book(String title, String author, double price) { this.title title; this.author author; this.price price; } }7. 构造方法与继承7.1 子类构造方法调用父类构造方法子类构造方法会隐式或显式调用父类的构造方法。使用super()调用父类构造方法必须放在第一行。class Animal { private String name; public Animal(String name) { this.name name; System.out.println(Animal 构造方法被调用); } } class Dog extends Animal { private String breed; public Dog(String name, String breed) { super(name); // 调用父类构造方法 this.breed breed; System.out.println(Dog 构造方法被调用); } }7.2 构造方法调用顺序调用父类构造方法显式或隐式执行子类成员变量的初始化执行子类构造方法体中的代码8. 注意事项私有构造方法将构造方法声明为private可以防止外部创建对象常用于单例模式。构造方法不能被继承子类不能继承父类的构造方法但可以调用。构造方法不能被重写构造方法不是普通方法不能被重写。构造方法不能被 static、final、abstract 修饰。避免在构造方法中调用可被重写的方法可能导致子类对象未完全初始化。9. 常见面试题9.1 构造方法可以重载吗可以。构造方法支持重载只要参数列表不同即可。9.2 构造方法可以有返回值吗不可以。构造方法没有返回类型包括 void。9.3 构造方法可以被继承吗不可以。子类不能继承父类的构造方法但可以通过super()调用。9.4 构造方法可以声明为 final 吗不可以。构造方法不能被 final、static、abstract 修饰。9.5 构造方法可以调用普通方法吗可以但要避免调用可被重写的方法因为子类对象可能未完全初始化。10. 总结构造方法是 Java 面向对象编程中的重要概念它负责对象的初始化工作。理解构造方法的特性、类型、重载规则以及与继承的关系对于编写健壮的 Java 程序至关重要。合理使用构造方法可以提高代码的可读性和可维护性。

相关新闻

Android Studio集成Codeium:免费AI代码助手实战指南

Android Studio集成Codeium:免费AI代码助手实战指南

1. 项目概述:为什么我们需要一个免费的AI代码助手? 作为一名在Android开发一线摸爬滚打了十多年的老码农,我经历过从Eclipse到Android Studio的变迁,也见证了各种辅助工具的兴衰。最近两年,AI代码补全工具的出现&#…

2026/10/6 15:56:04 阅读更多 →
如何快速修复损坏的 Minecraft 世界:Minecraft-Region-Fixer 免费完整教程

如何快速修复损坏的 Minecraft 世界:Minecraft-Region-Fixer 免费完整教程

如何快速修复损坏的 Minecraft 世界:Minecraft-Region-Fixer 免费完整教程 【免费下载链接】Minecraft-Region-Fixer Python script to fix some of the problems of the Minecraft save files (region files, *.mca). 项目地址: https://gitcode.com/gh_mirrors/…

2026/9/28 16:18:13 阅读更多 →
MiniMax H3工作流实战:Turbo LoRA与上下文延长技术打造高效AI视频生成

MiniMax H3工作流实战:Turbo LoRA与上下文延长技术打造高效AI视频生成

如果你最近在尝试用AI生成视频,可能会遇到两个最头疼的问题:一是生成速度太慢,一个几秒的片段动辄需要几分钟甚至更久;二是视频时长太短,生成的片段之间衔接生硬,很难做出流畅的叙事。这两个痛点&#xff0…

2026/10/10 23:08:01 阅读更多 →

最新新闻

HiKid架构拆解:electron-vite三进程模型构建跨平台桌面应用完整实践

HiKid架构拆解:electron-vite三进程模型构建跨平台桌面应用完整实践

【免费下载链接】hi-kid HiKid - Your AI English Pal. A desktop app built with React and TypeScript, targeting children in non-English-speaking countries who want to practice English speaking and listening. 项目地址: https://gitcode.com/gh_mirrors…

2026/10/14 15:18:12 阅读更多 →
CubeSandbox:企业级安全工作流的可信执行底座

CubeSandbox:企业级安全工作流的可信执行底座

1. 项目概述:为什么企业安全执行面需要 CubeSandbox 这个“保险箱”最近在给三家制造业客户做安全架构复盘时,反复被问到一个问题:“我们部署了 OpenClaw 做自动化响应,也装了 DSH(Defense Shell)做终端策略…

2026/10/14 15:18:12 阅读更多 →
Go语言内存优化利器:betteralign工具实战指南

Go语言内存优化利器:betteralign工具实战指南

1. 项目概述:betteralign 工具的核心价值betteralign 是一个专门为 Go 语言开发者设计的内存优化工具,它通过智能分析结构体字段排列顺序,可以显著减少内存占用。在实际测试中,这个工具能让典型结构体的内存消耗降低 30-50%&#…

2026/10/14 15:18:12 阅读更多 →
Codex 半年使用总结:省 Token 技巧与计划模式实战

Codex 半年使用总结:省 Token 技巧与计划模式实战

1. 半年迭代里,Codex 到底变了哪些东西从去年底开始把 Codex 当作日常主力编码助手用到现在,差不多半年时间。这半年里它的更新节奏不算快,但每一次改动都挺有针对性,尤其是围绕 Token 消耗和交互模式这两块,变化比我一…

2026/10/14 15:18:12 阅读更多 →
astropy WCS 修复:备选 WCS(key=‘A‘/‘B‘)畸变关键字按后缀独立读取的完整解析

astropy WCS 修复:备选 WCS(key=‘A‘/‘B‘)畸变关键字按后缀独立读取的完整解析

科学计算科研数据分析 【免费下载链接】astropy Astronomy and astrophysics core library 项目地址: https://gitcode.com/gh_mirrors/as/astropy 点击查看 免费下载 导读 本文围绕 astropy 仓库中的修复条目 19228.bugfix.rst 展开:当一张 FITS 图像…

2026/10/14 15:18:12 阅读更多 →
2026年最新--区块链运营岗面试题库(100题)

2026年最新--区块链运营岗面试题库(100题)

一、行业趋势与运营思维(1-10题) 1. 2026年加密行业营销的核心趋势有哪些?请结合“用户质量优先”的转变,说明运营策略应如何调整。 2026年加密营销的7大核心趋势涵盖绩效营销、内容创作、渠道多元化、活动体验、激励机制以及AI驱动的运营。最关键的转变是:Fintech和Web…

2026/10/14 15:17:11 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →