Novice programmers always encounter this problem, code block static code block construction method Execution order
Parent class
public class Classsup {
Public Classsup () {
System.out.println ("Parent class constructor");
}
static {
System.out.println ("Parent class static code block");
}
{
SYSTEM.OUT.PRINTLN ("Parent code block");
}
public void Mathod01 () {
SYSTEM.OUT.PRINTLN ("Parent-class method");
}
}
Sub-class
public class Classson extends classsup{
Public Classson () {
System.out.println ("sub-constructor");
}
static{
System.out.println ("sub-static code block");
}
{
System.out.println ("code block");
}
@Override
public void Mathod01 () {
System.out.println ("Subclass Method");
}
}
public static void Main (string[] args) {
Classson cs = new Classson ();
}
Execution Result:
Parent class static code block
Child Static code block
Parent Class code block
Parent class constructor
code block
Sub-constructors
Summary: Static code block precedence is best (performed only once), parent class takes precedence over subclass loading
The code block takes precedence over the constructor method, and the parent class executes the child class first.
Interview anecdote Java code block static code block construction method Execution order