百度一下:构造函数
构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
那么,为什么要在创建对象时初始化对象呢?又是如何实现的呢?接下来我将用小baby的例子说明:
实例化一个小baby!
黑户型:我们先定义好一个类,需要时再给它赋值;(小孩出生后再起名字)
class Baby{ int id; //身份证 String name; //名字 public void cry(){ System.out.println(name+"哭的鼻涕都流出来啦!!!"); } } class Demo6 { public static void main(String[] args) { //创建一个baby对象 Baby b = new Baby(); //婴儿诞生 //赋予属性值 b.id=1; b.name="石头"; b.cry(); } }
白户型:婴儿出生时就有名字;
那么,这样产生的结果是:
诞生的两个孩子,都叫石头。。。双胞胎也不能叫一个名字啊!
...
于是,构造函数出现了
因为构造函数在每次实例化时会自动被调用,实例化几次会被调用几次。如果我们将每次变化的对象的属性值传入到构造函数中或许就可以了,试试代码。
代码实现:
class Baby { int id; //身份证 String name; //名字 //构造与类名Baby相同的Baby方法函数 public Baby(int i,String n) { id=i; name=n; System.out.println(); } public void cry() { System.out.println(name+"哭的鼻涕都流出来了。。。。。"); } } class Demo6 { public static void main(String[] args) { //创建一个baby对象 Baby b1 =new Baby(1,"石头"); //石头诞生 System.out.println("编号:"+b1.id+"姓名:"+b1.name); b1.cry(); Baby b2 =new Baby(2,"小石头"); //小石头诞生 System.out.println("编号:"+b2.id+"姓名:"+b2.name); b2.cry(); } }
效果图:诞生了两个小baby,小baby出生时就有了自己的名字,名字也不一样!
以上是我对构造函数初始化对应的对象的理解,希望能对大家带来帮助!
创建对象时,jvm就会调用到对应的构造方法,构造方法到底从何而来呢?请参见下一篇构造函数系列博客~