Day 29.Java面向对象-构造方法,构造方法的注意事项

今日
07‑构造方法
核心知识点📌
构造方法特征
方法名必须和类名完全一致
没有返回值类型,连 void 都不能书写
new 实例对象的时候自动触发执行,用于初始化对象成员属性
默认无参构造:一个类没有手动编写构造器,编译器自动赠送无参构造;只要定义任意带参构造,默认无参构造直接消失。
构造方法支持重载:区分依靠参数列表;可通过this(实参)完成构造器之间调用。
执行顺序:先堆空间开辟对象 → 成员变量默认初始化 → 执行构造方法代码。
一、语法硬性规则
方法名必须与类名完全一致,大小写都不能出错
不能书写返回值类型,连 void 都不许写;写上 void 就变成普通成员方法,不再是构造方法
构造方法没有 return 返回值;允许写无参数 return; 用来提前结束构造,不能 return 数据
修饰符只能使用访问权限修饰符(public、private、protected、默认),不能加 static、final、abstract、native
二、默认构造器规则
类内没有手动编写任何构造方法,编译器自动生成默认无参构造
只要你定义了带参构造、私有构造等任意构造方法,编译器立刻回收默认无参构造
后续想要无参实例化对象,必须手动添加无参构造
三、构造方法重载规则
支持重载:方法名固定为类名,依靠参数个数、类型、顺序区分多个构造器
使用 this(实参列表) 调用本类其他重载构造方法
this() 语句必须放在构造方法第一行
普通成员方法、static 静态方法中不能调用 this()
四、执行顺序与内存细节
new 对象执行顺序:堆内存开辟空间 → 成员变量默认初始化 → 执行构造方法代码
构造方法仅在实例化 (new) 对象的时候自动执行,对象创建完成后无法手动再次调用构造器
五、封装‑数据安全注意点
构造方法直接给 private 成员变量赋值,会绕过 setter 方法的数据合法性校验
规范写法:构造器内部调用 setXxx () 方法赋值,复用校验代码
public Student(int age){
setAge(age);
}
六、私有构造方法特点
构造方法被 private 修饰:外部类无法 new 创建对象,常用于单例模式、工具类,禁止实例化
明日
Java面向对象原理
问题及解决方案
问题:添加带参构造之后,new 类名()报错
原因:自定义带参构造后,编译器收回默认无参构造
解决:手动编写无参构造方法
问题:构造方法书写 void,导致无法初始化对象
原因:带有返回值 void 就变成普通成员方法,不再属于构造方法
解决:删掉全部返回值声明
问题:this(参数)放在构造方法代码第二行编译报错
原因:构造方法调用语句必须位于第一行
解决:将 this 重载调用挪至方法最开头
问题:构造方法直接给私有属性赋值,绕过 setter 的数据校验
解决:构造方法内部调用 set 方法完成赋值,复用校验逻辑
public Person(int age){
setAge(age);
}

posted @ 2026-08-10 16:04  CCidy  阅读(27)  评论(0)    收藏  举报