又见构造块与静态代码块(笔试)

请问父类/子类中的方法谁先加载?

  在执行main方法之前,会把本类的方法加载到方法区,意味着先执行静态代码块,然后就开始new对象,

new对象之前会先执行构造方法,在前面学习中知道构造方法体执行之前会先执行构造块;

 

子类和父类谁先加载?

  肯定是先加载父类,因为到最后在测试类中找不到父类就蒙了。

  先执行父类的静态代码块-》在执行子类的静态代码块-》父类的构造块-》父类的无参构造方法-》子类的构

造块-》子类的无参构造方法

我们前面讲过在创建子类对象时,由于子类对象里面包含着一个父类类型的对象,所以为了完整创建子类类型

的对象必须先创建父类的对象,创建父类对象时必须创建构造方法,只是默认调用无参构造。(所以由此可得

这时候应该先调用父类的无参构造)

如下图所示:

父类:

 

 

 子类:

 

 

先执行父类的静态代码块,再执行子类的静态代码块。

执行父类的构造块,执行父类的构造方法体。

执行子类的构造块,执行子类的构造方法体。

posted @ 2020-08-30 23:51  IJLog  阅读(159)  评论(0编辑  收藏  举报