构造方法 vs 普通成员方法 完整区别
1. 命名规则
- 构造方法:方法名必须和类名完全一样,大小写一致
- 普通方法:名字自定义,不能和类名强制一致,一般用动词
2. 返回值
- 构造方法:没有返回值,连
void 都不能写,写了就变成普通方法
- 普通方法:必须声明返回类型,无返回就写
void,有返回写具体类型(int/String等)
3. 调用时机 & 方式
- 构造方法
- 只能在
new 类名() 创建对象时自动调用
- 一个对象只会执行一次
- 不能手动通过对象.构造()调用
- 普通方法
- 对象创建完成后,使用
对象.方法名() 手动调用
- 同一个对象可以调用无数次
4. 作用
- 构造方法:专门初始化对象成员变量,给属性赋初始值
- 普通方法:描述对象的功能行为(吃饭、跑步、打印信息等)
5. this 调用规则
- 构造方法:可以用
this(参数) 调用本类其他构造,必须放在第一行
- 普通方法:不能使用
this();只能用 this.方法名() 调用其他普通方法
6. 修饰符限制
- 构造方法:不能用
static、final、abstract 修饰
- 普通方法:可以加
static、final、abstract、private 等任意合法修饰符
7. 默认生成规则
- 构造方法:类中不写任何构造,编译器自动生成一个公共无参构造;只要写了有参构造,默认无参构造消失
- 普通方法:编译器不会自动生成任何普通方法,必须手动定义
对比表格
| 对比维度 |
构造方法 |
普通成员方法 |
| 方法名称 |
和类名完全相同 |
自定义名称 |
| 返回值 |
无,禁止写void |
必须写void/具体返回类型 |
| 调用方式 |
new 对象时自动执行 |
对象.方法()手动调用 |
| 执行次数 |
每个对象仅执行1次 |
可随意调用多次 |
| 核心作用 |
初始化对象属性 |
实现对象功能行为 |
| this调用 |
支持this()调用其他构造 |
不支持this() |
| 默认生成 |
无构造时自动生成无参构造 |
不会自动生成 |
| 修饰符 |
不能static/final/abstract |
可加static/final/abstract |
错误示例区分
public class Student {
// 构造方法
public Student(){}
// 普通方法(名字和类名相同,但加了void,不是构造)
public void Student(){}
}