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/11/11 15:02:46 阅读更多 →
如何快速修复损坏的 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/11/7 14:49:51 阅读更多 →
MiniMax H3工作流实战:Turbo LoRA与上下文延长技术打造高效AI视频生成

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

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

2026/11/15 21:33:08 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/15 5:13:35 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/15 5:13:35 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/15 5:13:35 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/15 3:37:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/15 4:18:38 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/15 5:13:35 阅读更多 →

日新闻

周新闻

月新闻