问:请问语句System.out.println("-----------Spring加载完成");
加载完成之前(执行之前),Person和Teacher对象就已经被创建好了吗?
//答:已经创建好了,
通过控制台可以看出
----------Person()无参构造器---------
-----Teacher()无参构造器-------
-----------Spring加载完成
前面两个加载最快,所以是已经创建完成
将Spring的代码注释掉
新建一个Teacher对象,问:输出结果是什么?
答:输出结果应该为
问:这里不是只实例化了一个Teacher对象吗,应该只输出----Teacher()无参构造器----才对,为什么还输出了—Person()无参构造器—语句呢?
答:当你实例化一个字类时,他会先实例化所有父类的无参构造器,就是说在实例化Teacher时,他会先实例化父类Person()中的无参构造器,所以会先输出----person()----;
所有的代码都不改变,只改变Person()中的代码
请问,这样执行语句会报错吗
答:会报错
原因:我们在Teacher中写的是无参方法,那么我们在TestBean01中new的也是无参方法,但是在Teacher中我们继承了Person。实例化任何一个子类,他必须将所有父类的无参构造器初始化一遍,也就是说Teacher不会直接的打印【-----Teacher()无参构造器】,他会先到Person中执行一遍Person中的无参构造器。但是由于我们将Person中的无参构造器注释掉了,而且在Person中构造了一个有参的构造器
在一个类中,如果没有任何手动创建的构造器,默认系统会产生一个无参构造器,但是手动创建一个有参的构造器会覆盖掉默认的无参构造器,这里的无参构造器就不存在了,所以就报错了最后通过以上案例可以看出
Spring中
的作用就是new了一个对象,构造器的作用就是构造对象,构造实例



