一、构造方法的引入
:::
- 当一个对象被创建的时候,构造方法用来初始化该对象。构造方法和它所在的类的名字相同,但构造方法**没有返回值**
我们在使用new关键字创建对象时,往往看见后面跟着一个无参方法,这个方法就是无参的构造方法。我们在使用Scanner类时创建的input对象,使用了有参的构造方法。
Student stu = new Student();
Scanner input = new Scanner(System.in);
二、构造方法语法
:::
构造方法的语法:
[修饰符] 类名(形参列表) {
// 方法体
}
注意**: **
构造方法没有返回值,因此在构造方法中不允许返回任何数据
- 构造方法名必须是“类名”,构造方法使用“大驼峰”命名规则(和类名一模一样)
构造方法就是一个特殊的方法,我们应该通过new关键字来调用构造方法 :::info
三、创建对象的步骤
:::
分析:”new Object01( );”底层的实现过程
- 1 创建对象,并为成员变量开辟内存空间
- 2 给成员变量做“默认初始化”
- 3 给成员变量做“显示初始化”
- 4 调用构造方法,给成员变量做“指定初始化”
** 成员变量**—->默认初始化—->显示初始化—->指定初始化
- 创建对象是谁完成的呢?
- new关键字负责创建对象,构造方法完成对成员变量的指定初始化操作,创建对象的时候new关键字和构造方法缺一不可!
- 构造方法的作用是什么?
- 创建对象时,new关键字和构造方法缺一不可
- 通过构造方法,我们完成对成员变量的指定初始化操作**【核心】**
:::info
四、无参构造方法
::: 作用:给成员变量做初始化操作,例如:给数组类型的成员变量开辟内存空间并数组元素赋值
如果某个类中没有显示地提供构造方法,那么程序编译时会默认给这个类提供一个无参构造 :::info
五、有参构造方法
::: 作用:给成员变量做指定初始化操作,例如:调用有参构造方法时,我们把形参的值赋值给成员变量来保存
建议有参构造方法的“形参名”和“成员变量名”保持一致,这样能提高代码的可读性
如果某个类中显示提供了构造方法,那么程序在编译时就不再默认提供无参构造方法,**建议为每个类都提供一个无参构造方法,避免在继承体系下子类找不到父类的无参构造方法** :::info
六、构造方法和成员方法的区别
:::
定义语法的区别:
构造方法
[修饰符] 类名(形参列表) {
// 方法体
}
成员方法
[修饰符] 返回值类型 方法名(形参列表) {
// 方法体
return [返回值];
}
- 调用语法区别:
- 构造方法:通过new关键字调用
- 成员方法:**必须通过“对象”调用**
- 调用时机区别:
- 构造方法:创建对象的时候调用
- 成员方法:对象创建完毕后调用
- 调用次数的区别:
- 构造方法:**只能调用一次**,每次调用都会创建新的对象
- 成员方法:可以调用任意次数,对此通过对象调用即可
- 构造方法和成员方法的特点???
- 在构造方法和成员方法中都存在this关键字,因此都能操作当前类的成员变量和成员方法