楼主其实弄混了,对象创建是new,new才会开辟对象空间,而不是调用构造函数,构造函数也仅仅是函数,所以可以被调用。
在创建对象的时候,是根据参数列表(构造函数之间只有这点区别)来选择构造函数的,比如new A(3,4)选择了2参构造函数,
运行这个构造函数时调用this(3),并不是创建对象。连空间都没有分配,怎么会有对象呢。
至于为什么这里一定是this(a)而不能像一般函数一样使用名称调用,构造函数只有关键字new才能调用,你不能在非new的情况下调用它,
否则编译无法通过,错误提示是找不到符号。加上this就好像说把this(a)本来要创建的内容去掉壳,直接创建在new A(3,4)中了。
水平有限,深入的机制我也没有接触过。~~~ |