📅  最后修改于: 2020-04-02 14:07:02             🧑  作者: Mango
构造函数用于初始化对象的状态。与方法类似,构造函数还包含在创建对象时执行的语句(即指令)的集合。
如果我们谈论盒子Box类,那么它将有一些类变量(例如,长度,宽度和高度)。但是,当要创建其对象时(即Box现在将存在于计算机的内存中),是否可以存在一个没有为其尺寸定义值的Box。答案是不。
因此,在创建对象时,可以使用构造函数将值分配给类变量,这些值可以由程序员显式完成,也可以由Java本身(默认构造函数)完成。
什么时候调用构造函数?
每次使用new()关键字创建对象时,都会调用至少一个构造函数(可以是默认构造函数),以将初始值分配给同一类的数据成员。
创建对象或实例时会调用构造函数。例如:
class mango
{
.......
// A Constructor
new mango() {}
.......
}
// 创建一个对象
mango obj = new mango();
编写构造函数的规则:
构造函数的类型
Java中有两种类型的构造函数:
// Java程序展示调用无参数构造函数
import java.io.*;
class mango
{
int num;
String name;
// 对象创建的时候被调用
mango()
{
System.out.println("构造函数被调用");
}
}
class GFG
{
public static void main (String[] args)
{
// 调用默认构造函数.
mango mango1 = new mango();
// 默认构造函数给对象提供默认值
System.out.println(mango1.name);
System.out.println(mango1.num);
}
}
输出:
构造函数被调用
null
// Java展示参数化构造函数
import java.io.*;
class mango
{
// 数据成员.
String name;
int id;
// 参数化构造函数
mango(String name, int id)
{
this.name = name;
this.id = id;
}
}
class GFG
{
public static void main (String[] args)
{
// 调用参数化构造函数.
mango mango1 = new mango("芒果", 1);
System.out.println("mangoName :" + mango1.name +
" and mangoId :" + mango1.id);
}
}
输出:
mangoName :芒果 and mangoId :1
构造函数是否返回值?
构造函数中没有“返回值”语句,但是构造函数返回当前的类实例。我们可以在构造函数中编写“ return”。
构造函数重载
像方法一样,我们可以重载构造函数,并以不同方式创建对象。编译器根据参数数量,参数类型和参数顺序来区分构造函数。
// Java展示构造函数重载
import java.io.*;
class mango
{
// 一个参数的构造函数
mango(String name)
{
System.out.println("一个参数的构造函数 " +
": " + name);
}
// 两个参数的构造函数
mango(String name, int age)
{
System.out.println("两个参数的构造函数 : " +
" String and Integer : " + name + " "+ age);
}
// 一个参数的构造函数,新类型
mango(long id)
{
System.out.println("一个参数的构造函数 : " +
"Long : " + id);
}
}
class GFG
{
public static void main(String[] args)
{
mango mango2 = new mango("mango");
mango mango3 = new mango("doc", 26);
mango mango4 = new mango(325614567);
}
}
输出:
一个参数的构造函数 : mango
两个参数的构造函数 : String and Integer : doc 26
一个参数的构造函数 : Long : 325614567
构造函数与Java中的方法有何不同