Java之构造方法

什么是构造方法?

构造方法是 Java 中一种特殊的方法,它的核心作用是:在创建对象(使用new关键字)时,初始化该对象的成员变量

构造方法解决什么问题?

构造方法解决给对象初始化的问题

构造方法怎么使用?

一:直接在构造方法中赋值

class Person { // 成员变量(未初始化,默认值:name=null,age=0) private String name; private int age; // 构造方法初始化:给成员变量赋具体值 public Person(String name, int age) { // this.name 指向对象的成员变量,name 是构造方法的参数 this.name = name; // 初始化姓名 this.age = age; // 初始化年龄 } public void show() { System.out.println("姓名:" + name + ",年龄:" + age); } public static void main(String[] args) { // 创建对象时,触发构造方法初始化 Person p = new Person("小明", 18); p.show(); // 输出:姓名:小明,年龄:18(说明初始化成功) } }

二:在继承类中如果父类中没有空参构造方法,只有带参构造方法

  • 子类通过 super,手动调用父类的带参的构造方法, 推荐

public class Person { //成员变量 private String name; private int age; //成员方法 public void show() { System.out.println(name + "-----" + age); } //无参构造 // public Person() { // } //带参构造 public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ------------------------------------------------------------------------ public class Student extends Person{ //成员变量 private int score; //有参构造 public Student() { //隐藏代码:super(); //自动调用父类中的无参构造方法,如果父类中没有无参构造,只能手动调用父类中的带参构造 super("梅梅",23); } public Student(String name, int age, int score) { super(name, age); this.score = score; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } } ---------------------------------------------------------------------------- public class Text { public static void main(String[] args) { //创建Student对象 //Student stu = new Student("张三", 23, 100); Student stu = new Student(); stu.show(); } } --------------------------------------------------------------------------------- 运行结果:梅梅-----23
  • 子类通过 this 去调用本类的其他构造方法,本类其他构造方法再通过 super 去手动调用父类的带参的构造方法 , 不推荐

public class Father { public Father() { System.out.println("Father类 -> 无参构造方法"); } public Father(String name){ System.out.println("Father类 -> String参数构造方法"); } } --------------------------------------------------------------------- public class Son extends Father{ public Son() { //隐藏代码:super(); this("梅梅");//调用:Son(String name) System.out.println("Son类 -> 无参构造方法"); } public Son(String name){ //隐藏代码:super(); //调用父类中的有参构造方法 super(name); System.out.println("Son类 -> String参数构造方法"); } } ------------------------------------------------------------------------ public class Text { public static void main(String[] args) { //创建子类对象 Son son = new Son(); } } ---------------------------------------------------------------------- 运行结果: Father类 -> String参数构造方法 Son类 -> String参数构造方法 Son类 -> 无参构造方法

怎么初始化?

如果一个类没有手动定义任何构造方法,Java 会自动提供一个默认的无参构造方法;如果手动定义了有参构造方法,默认(没有手动定义任何构造方法时的无参构造方法)的就会失效

在继承类中构造方法的第一条语句默认都是:super(),被隐藏

构造方法使用时注意细节?

  • 方法名必须和类名完全相同(包括大小写);
  • 没有返回值类型(连void都不能写);
  • 构造方法只能在创建对象时由new关键字自动调用,不能手动调用
  • 子类中所有的构造方法默认都会访问父类中的无参构造(原因:子类在初始化的时候,有可能使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据【子类初始化之前,一定要先完成父类的初始化】)
  • super()必须写在子类构造方法的第一行,否则编译报错;
  • 父类的无参构造可以是默认的(不手动写任何构造方法时,Java 自动生成),也可以是手动定义的;
  • 如果父类的无参构造是 private(私有),子类无法访问,会编译报错
  • 不能被static、final、abstract等关键字修饰(public/private/protected权限修饰符可以用)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1124761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

‌性能测试认证备考全指南:从ISTQB到AI驱动的云原生实战

‌一、主流性能测试认证体系全景图‌认证体系认证级别适用人群核心考试内容权威性与行业认可度‌ISTQB Performance Testing‌基础级(FL)、进阶级(AT)、专家级(ET)初级测试员、测试经理、质量负责人七大知识…

mysql innodb_log_buffer_size 参数详解

innodb_log_buffer_size 是 MySQL InnoDB 存储引擎中的一个重要配置参数,用于控制 InnoDB 日志缓冲区(log buffer)的大小。这个缓冲区用于在将事务日志(redo log)写入磁盘之前,临时缓存这些日志数据。一、作…

前沿制造深度:传统系统如OEE是否有必要使用AI技术改造?

今天是2026年1月7日。欢迎来到《前沿智造》深度访谈节目。我是主持人闻道瑞伟。 制造业的数字化转型已进入深水区,和所有传统的制造运营绩效指标体系和数字化系统一样,作为衡量生产效能的“黄金指标”——整体设备效率系统,正站在一个技术十字路口。一边是运行多年、稳定但…

mysql innodb_flush_log_at_trx_commit 参数详解

innodb_flush_log_at_trx_commit 是 MySQL InnoDB 存储引擎中控制事务提交时 redo log(重做日志)刷盘行为的关键参数,直接影响 数据持久性 与 写入性能 之间的权衡。一、参数作用 该参数决定了:当一个事务执行 COMMIT 时&#xff…

救命神器!研究生必备10个AI论文平台深度测评

救命神器!研究生必备10个AI论文平台深度测评 一、不同维度核心推荐:10款AI工具各有所长 对于研究生而言,学术写作是一个复杂而繁琐的过程,从开题到初稿、查重、降重再到排版,每个环节都需要合适的工具来辅助。不同的AI…

‌2026年安全测试工具Top 10:AI驱动下的范式跃迁与从业者实战指南

一、2026年安全测试工具演进的底层逻辑‌2026年不再是“工具功能叠加”的时代,而是‌智能体(Agent)主导测试流程‌的元年。Gartner与Forrester在2025年报告中已明确指出:“AI在安全测试中的角色,已从‘辅助脚本生成’升…

2026年AI论文工具爆火!9款神器限时公开,从选题到降重一站式搞定

凌晨3点,导师的修改意见邮件第5次响起,查重率卡在29.9%,deadline只剩48小时……这样的至暗时刻,你还在独自硬扛吗?醒醒,2026年的学术圈,早已不是一个人的战场! 深夜赶稿、反复修改、…

从600万到3000万:揭秘中小商家的增长密码

引言 中小商家最头疼的问题:产品不错,但没钱做推广。 今天看更关键的部分——如何从600万做到3000万。这背后不是靠运气,而是一套可复制的商业架构。 一、传统生意困局:酒香也怕巷子深 大多数商家面临三重困境: 广告…

Java之匿名对象

有名对象:有名字的对象 Student stu new Student(); //有名字的对象//对象名: stu匿名对象:创建的对象没有名字 new Student(); //创建的对象没有名字 new Student("张三",23);匿名对象的使用方式 匿名对象可以像有名对象一样使用…

基于Springboot + vue3实现的家具商城系统

项目描述本系统包含管理员和用户两个角色。管理员角色:轮播图管理:管理轮播图配置参数。管理员管理:管理系统中的管理员信息,包括添加、删除和修改管理员。用户管理:管理系统中的用户信息,包括添加、删除和…

CTF入门指南:从零到拿下Flag的完整路径

📚 首先,正确认识CTFCTF(Capture The Flag,夺旗赛)是网络安全的“实战练兵场”。你需要通过挖掘漏洞、解密数据、逆向分析程序等手段,找到隐藏的特定字符串(Flag,通常格式为flag{xxx…

免费文献检索网站推荐:实用高效的学术资源获取平台

一、WisPaper:智能学术搜索激发科研灵感 科研创新的关键是了解前沿,找到突破口。但传统查文献方式往往效率低: Google Scholar 或 arXiv 搜索结果太多,难以筛选公众号推送滞后,容易错过最新研究文献阅读时间长&#…

西门子PLC STL编程常见的错误(四):上升(下降)沿不工作

上升(下降)沿不工作也是一种常见的错误,尽管手册中“P”或“N”指令允许的数据类型为:I,Q,M,L,D。但如果没有特殊目的,仅建议使用M及DB数据类型。如下图: 西门子“P”指令要求使用与前面指令不相同的地址&…

【Java毕设源码分享】基于springboot+vue的OA管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【开发者必看】GPT Image 1.5发布:图像生成速度提升4倍,API开放让创意触手可及!

GPT Image 1.5正式发布了,它是 OpenAI 最新一代图像生成与编辑模型,对比之前的 GPT-Image-1,实现了全面升级。它不仅用于生成图像,也强化了编辑、保真与创意控制能力,并开放了 API 接入。 新的图像生成模型发布之后&am…

促销海报设计:驱动转化的核心方法与实操技巧

在数字营销的流量战场中,促销海报是品牌与用户直接对话的“第一视觉触点”——它既要在3秒内抓住用户注意力,又要清晰传递促销价值,更要引导用户完成点击、购买或到店的转化动作。然而,很多企业的促销海报却陷入“自嗨式设计”误区…

黑客技术的水到底有多深?普通人别盲目入局!网安入行先看清这 3 个真相

经常能看到有人问 “零基础能学黑客技术吗?”“学网安真的能月入 20K 吗?”—— 作为从业多年的安全工程师,今天想从技术门槛、行业收益、职业路径三个维度,跟大家聊聊真实的网安行业,帮想入行的朋友避开 “脚本小子”…

NAS 双网口到底有啥用?怎么用?极空间NAS双网口的正确打开方式

NAS 双网口到底有啥用?怎么用?极空间NAS双网口的正确打开方式哈喽小伙伴们好,我是Stark-C~不知道有多少小伙伴在购买了NAS之后就直冲系统功能玩法,而忽视了NAS最基本的配置功能。就比如说很多NAS都配备了双网口,可能大…

python 基础类型和dart的基础类型的对比

对比Python和Dart的基础数据类型,这是跨语言学习的核心要点——两者虽都属于「动态/弱类型(Python)vs 强类型(Dart)」的典型,但基础类型的设计逻辑、核心用法差异显著,我会从类型体系、核心差异…

WebGPU与浏览器边缘智能:开启去中心化AI新纪元

WebGPU与浏览器边缘智能:开启去中心化AI新纪元 1. WebGPU:下一代Web图形与计算API 1.1 诞生背景与核心定位 WebGPU是W3C推出的下一代Web图形API,旨在彻底解决其前身WebGL在性能、功能扩展性及多线程支持上的根本性局限。自2021年进入推荐标准…