前言
学习 Java 的时候我们经常会听到一个词,那就是“构造方法”。记得我刚学习构造方法的时候,我总是会想:构造方法和普通方法有啥不一样?构造方法咋用呢?估计是我脑子笨,这些问题我思考了好久才想明白😂... 闲言少叙,直接切入正题,今天就和大家聊一聊什么是构造方法。
构造方法
在说什么是构造方法之前,我们先看看什么是方法。方法就是一些语句凑在一起实现了某些功能的集合,它通常由以下几部分组成👇
修饰符 返回值类型 方法名(参数类型 参数名, ....){
方法体;
return 返回值;
}
当然了, 一个方法里面可以有参数,也可以没有参数;可以有返回值,也可以没有返回值。那构造方法就和方法不太一样了,构造方法有这么两个特点:
- 构造方法的方法名必须要和类名一致。
- 没有返回值类型,更没有具体的返回值(void 都不需要写)。
说到这,大家可能就知道构造方法的格式了,没有错!!就是这样👇
修饰符 类名(参数类型 参数名, ....){
方法体;
}
还是老规矩,下面用代码给大家细细讲解一下,我们首先定义一矩形类,并在其中定义一个带参的构造方法👇
/**
* 矩形类
* @description: rectangle
* @author: 庄霸.liziye
* @create: 2022-01-17 10:10
**/
public class Rectangle {
public int length;
public int width;
public int area(){
return length * width;
}
/**
* 带参数的构造方法
* @param width 宽
* @param length 长
*/
public Rectangle(int width, int length){
this.length = length;
this.width = width;
}
}
接下来我们写一个 main 方法,去实例化一个矩形对象👇
/**
* 实例化矩形对象
* @description: RectangleTest
* @author: 庄霸.liziye
* @create: 2022-01-17 10:13
**/
public class RectangleTest {
public static void main(String[] args) {
//实例化一个长宽均为5的矩形对象
Rectangle rectangle = new Rectangle(5, 5);
System.out.println("矩形的面积 = " + rectangle.area());
}
}
我们执行 main 方法后可以看到控制台打印出了这个矩形的面积👇
有了上面的代码,大家应该就明白了构造方法的作用,构造方法就是类构造对象时调用的方法,主要用来实例化对象。 我们通过自己定义的一个带参构造方法实例化了一个5*5的矩形,并计算了这个矩形的面积。这时候肯定有小伙伴会产生疑问了:无参构造方法怎么用呢?
在我们编写代码的时候经常会用到无参的构造方法,或许有些小伙伴用到了,但是并不知道自己使用的就是无参构造方法。咱们改造一下上面的代码~
/**
* 矩形类
* @description: rectangle
* @author: 庄霸.liziye
* @create: 2022-01-17 10:10
**/
public class Rectangle {
public int length;
public int width;
public int area(){
return length*width;
}
}
/**
* 实例化矩形对象
* @description: RectangleTest
* @author: 庄霸.liziye
* @create: 2022-01-17 10:13
**/
public class RectangleTest {
public static void main(String[] args) {
//实例化一个长宽均为5的矩形
Rectangle rectangle = new Rectangle();
rectangle.length = 5;
rectangle.width = 5;
System.out.println("矩形的面积 = " + rectangle.area());
}
}
这里需要说一下构造方法的第三个特点了:自定义类中必定有构造方法,若不写,系统则会自动添加无参构造方法。 我们把带参构造方法删除后,在代码编译阶段,就自动帮助我们添加了一个无参构造方法。在main方法中 Rectangle rectangle = new Rectangle(); 就是调用了无参构造方法来实例化了一个矩形对象。这也就是为什么我们在没有学习构造方法之前也可以通过 new 关键字创建对象的原因啦 o( ̄▽ ̄)ブ
最后我们在对构造方法做一个总结👇
-
一个类中可以有多个构造方法,多个构造方法是以重载的形式存在的。
-
构造方法是可以被 private 关键字修饰的,被 private 关键字修饰后代表了其他程序无法创建该类的对象。
-
构造方法在对象创建时就执行了,而且只执行一次;一般方法是在对象创建后,需要使用时才被调用,而且可以被多次调用。
-
构造方法和构造函数是同一个东西,只是 Java 习惯叫方法,而 C/C++ 习惯叫函数。
-
很多博客中都把构造方法的作用说成是为了创建一个对象,其实这种理解是存在瑕疵的。我们必须承认,在创建一个类的对象时是一定要要调用构造方法的,但构造方法的作用其实并不是为了创建对象,而是为了“初始化对象的内部状态”,这句话听起来不太好理解,说白了就是为了给对象的各个属性赋初始值。
小结
本人经验有限,有些地方可能讲的没有特别到位,如果您在阅读的时候想到了什么问题,欢迎在评论区留言,我们后续再一一探讨🙇
希望各位小伙伴动动自己可爱的小手,来一波点赞+关注 (✿◡‿◡) 让更多小伙伴看到这篇文章~ 蟹蟹呦(●'◡'●)
如果文章中有错误,欢迎大家留言指正;若您有更好、更独到的理解,欢迎您在留言区留下您的宝贵想法。
爱你所爱 行你所行 听从你心 无问东西