give the conclusion first:Execution Order: Parent class static Block--subclass static block (before main function execution), parent class block, parent class constructor, child class constructor, subclass blockAssignment Order: Member variable assignment, block assignment, and constructor assignment
1 classa{2 Static{System.out.println ("Class A");}3{System.out.println ("Class C");}4 PublicA () {5System.out.println ("This class A");6 }7 }8 9 Public classTest1extendsa{Ten Static{System.out.println ("Class B");} One PublicTest1 () { ASystem.out.println ("This class B"); - } -{SYSTEM.OUT.PRINTLN ("Class D");} the Public Static voidMain (string[] args) { -SYSTEM.OUT.PRINTLN ("----Start---"); - NewTest1 (); - NewTest1 (); +SYSTEM.OUT.PRINTLN ("---end---"); - } + } A at The result is: - Class A - classB -----Start--- - Class C - This classA in classD - This classB to Class C + This classA - classD the This classB *---end---View Code
****
The assignment step is
- Static variable assignment for parent class
- Static variable assignment of its own value
- Parent class Member variable assignment
- Parent Class block Assignment
- Parent class constructor Assignment value
- Assigning values to self-member variables
- Self-block assignment
- Self constructor Assignment
Java program Execution order