我们在Java中常常会使用到继承这个Java的三大特性之一,但是对创建的子类对象中内容的执行顺序不是很清楚。下面我们来讲讲子类对象内容的执行顺序,不管这个对象是赋值给子类对象的引用还是向上转型类对象的引用。
当两个类之间存在继承关系时,如果我们创建了子类对象,并调用了子类中重写父类的方法,那么父类和子类中的内容的执行顺序是:
① 父类的静态代码块
② 子类的静态代码块
③ 父类的非静态代码块
④ 父类的无参构造方法
⑤ 子类的非静态代码块
⑥ 子类的无参构造方法
⑦ 子类被调用的重写父类的方法
以上说明,程序在运行时,随着类文件的被加载,静态代码块和静态内容也会同时加载,然后随着类对象的创建,会依次按照继承关系依次执行非静态代码块和无参构造函数,最后再执行对象调用的方法。