I knew that when i create an instance static block first initialized then code block and then constructor here my code
public class Main{
public Main() {
out.println("constructor initialised");
}
static {
out.println("static block initialised");
}
{
out.println("Code block initialised");
}
public static void main(String... args) {
new Main();
}
}
output like this
static block initialised
Code block initialised
constructor initialised
the output above clear my concept but when I extend some class like this
public class Main extends Bear{
public Main() {
out.println("constructor initialised");
}
static {
out.println("static block initialised");
}
{
out.println("Code block initialised");
}
public static void main(String... args) {
new Main();
}
}
Bear Class
class Bear{
static {
out.println("static block initialised of bear class");
}
{
System.out.println("Code bLock initialised of bear class");
}
void run() {
out.println("running...");
}
}
output like this:
static block initialised of bear class
static block initialised
Code bLock initialised of bear class
Code block initialised
constructor initialised
when extending class the order of execution is changed i don't understand why this was happens the output above