java 子类继承父类各方法的执行顺序

结论:

    java中子类继承父类各方法的执行顺序:(这里只写jvm自动调用的方法的顺序,包括静态代码块、代码块、构造方法)

       1、第一次创建子类对象

        父类静态代码块

        子类静态代码块

        父类代码块

        父类构造方法

        子类代码块

        子类构造方法

        2、之后创建子类对象,子类和父类的静态代码块不会执行,其余不变。

解释:

    1、java的机制是先编译成字节码文件.class  然后在JVM上解释器逐行翻译成机器码文件,那从.class 到JVM加载的时候,就执行static代码块和static变量,所以先执行静态代码块,并且执行顺序是先执行父类的在执行子类的。

    2、创建对象的时候,调用了它的构造方法,所有子类的构造方法第一行的时候都隐含 super(),所以会先调用父类的构造方法,而每次在执行构造方法之前都会执行代码块,父类的代码块,父类的构造方法执行完毕之后,开始执行子类的代码块,构造方法。

    3、补充:

        (1)如果有多个构造方法(比如:有参的、无参的、参数个数不同的),根据创建对象时传的参数找对应的构造方法(比如:无参的找无参的,有参的找有参的)。

        (2)多态的顺序也是这样的。

        (3)加上main方法

                子类和main方法在同一个类中,如果在new子类对象之前main方法中有语句,那么顺序就是:静态、main()的语句、父类代码块、父类构造方法...... 

                如果新建一个测试类、在new子类对象之前main方法中有语句,顺序为:main()的语句、静态、父类代码块。

           解释:如果子类和main在同一个类中,加载子类,静态、执行main。如果不在同一个类,先加载main的类,执行到new子类时,才加载子类。

                

   

猜你喜欢

转载自blog.csdn.net/qq_36893618/article/details/80158031