关注
第1步:先看代码
// 煮泡面的类
class 煮泡面 {
String 口味;
// 无参构造:默认煮"老坛酸菜"
煮泡面() {
this("老坛酸菜"); // 重点:无参构造调用有参构造,传默认值
}
// 有参构造:按指定口味煮
煮泡面(String 口味) {
this.口味 = 口味;
System.out.println("正在煮" + 口味 + "泡面:");
System.out.println("1. 烧开水");
System.out.println("2. 放面饼+调料");
System.out.println("3. 泡3分钟");
}
}
第2步:拆解调用流程(关键!)
当你执行 new 煮泡面() 时:
1. 先进入无参构造 煮泡面()
2. 第一行遇到 this("老坛酸菜") ,立刻跳转到有参构造 煮泡面("老坛酸菜")
3. 在有参构造中,执行煮面步骤(烧开水、放调料等)
4. 有参构造执行完,回到无参构造(此时无参构造没有其他代码,直接结束)
重点:
- 无参构造自己不写煮面步骤,而是让有参构造去做(传默认口味“老坛酸菜”)
- 不管调无参还是有参构造,煮面步骤只在有参构造里写一次,避免重复
第3步:生活场景还原(彻底懂!)
- 你(无参构造):想煮泡面,但懒得说口味 → 对兄弟(有参构造)说:“帮我煮包默认的老坛酸菜”
- 兄弟(有参构造):收到指令,按“老坛酸菜”煮面(执行具体步骤)
- 核心:
你(无参)不关心怎么煮,只负责传默认口味;
兄弟(有参)负责具体干活,步骤只写一次。
这样不管谁煮面,步骤都不重复,你还能偷懒不用多说废话~
终极灵魂拷问:为什么无参构造能传参数?
- 因为 this(参数) 的本质是:让当前构造方法去调用本类的其他构造方法,参数是传给被调用的构造方法的。
- 无参构造自己没有参数,但它可以调用有参构造,并给有参构造传参数(比如默认值)。
就像你没带钱(无参),但可以让兄弟(有参构造)用他的钱(参数)请你吃面~
查看原帖
1 1
相关推荐
01-08 17:19
浙江大学 算法工程师 点赞 评论 收藏
分享
查看24道真题和解析 点赞 评论 收藏
分享
01-29 15:13
门头沟学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
4673次浏览 68人参与
# 找工作的破防时刻 #
251690次浏览 1953人参与
# 程序员找工作至少要刷多少题? #
9385次浏览 146人参与
# 你投递的公司有几家约面了? #
157803次浏览 995人参与
# 论秋招对个人心气的改变 #
5939次浏览 104人参与
# 我的AI电子员工 #
26156次浏览 159人参与
# OPPO求职进展汇总 #
770968次浏览 5396人参与
# 为了减少AI幻觉,你注入过哪些设定? #
1879次浏览 54人参与
# 刚入职的你踩过哪些坑 #
4223次浏览 91人参与
# 程序员能干到多少岁? #
5799次浏览 90人参与
# 一张图晒一下你的AI员工 #
2995次浏览 62人参与
# 牛客AI体验站 #
3400次浏览 91人参与
# 我现在比当时_,你想录用我吗 #
3695次浏览 63人参与
# 想辞职但是不敢的原因 #
20173次浏览 88人参与
# ai智能作图 #
624763次浏览 5627人参与
# AI Coding的使用心得 #
2359次浏览 60人参与
# 关于春招/暑期实习,你想知道哪些信息? #
3994次浏览 84人参与
# 牛客租房专区 #
146764次浏览 1464人参与
# 晒晒你司的新年福利 #
4012次浏览 70人参与
# 虾皮求职进展汇总 #
373445次浏览 2792人参与
