构造函数
- 构造函数默认就存在,以这种空参形式存在
- 多个构造器可以同时存在,根据实例生成时的传参的个数确定使用的是哪个构造器
this关键字:
this.name = name 意思就是将形参的值赋给这个对象的name属性
之所以不能写成:name=name
是因为主函数进栈时,形参的name已经存在于栈中
如果这么写,它会优先到栈中去找…
而不是把栈的值赋给堆中的对象的成员属性
当对象调用方法时(构造函数也是方法),默认会有this的引用,这个this,指的就是当前对象
所以当对象会有多个时,应该用this.进行标识,是哪个实例来调用的。
this()
我们可以在构造函数中调用其构造器
但是必须定义在构造函数的第一行,因为初始化动作需要先执行。
构造器调用过程
分步初始化
①当进行首行代码 Person p = new Person(’旺财’,30)时
先找到带有两个参数的构造器,进栈
②接着,遇到this(name)
触发带一个参数的构造函数进栈
执行this.name = name
这时候,对象(0x0067).name就有了值
③然后,第一个构造函数弹栈,执行第二个构造函数的赋值操作
将age赋值给了this(0x0067).age
④最后,初始化完毕,生成p对象: