Java创建子类——初始化顺序

1、前记

  • 这个问题非常频繁的出现各个公司的Java笔试题中。
  • 其实这个问题我一点都不陌生,现在还清楚的记者当初看Thinking in Java的时候,觉得作者关注Java的点是如此的细致,自己甚是佩服和惊喜。
  • 自己还认认真真的将这个顺序记录在读书笔记中,但是终究还是敌不过时间。经典果然是经典,多少年的书了,里面的知识点,现在依然作为考点,令人唏嘘啊!

2、顺序

father static!!!
child static!!!
father NaN Static
father Constructor
child NaN Static
child Constructor

3、Verify Code

package interview.test;

public class TestJavaGrammer {
    static
    {
        System.out.println("father static!!!");
    }

    {
        System.out.println("father NaN Static");
    }

    TestJavaGrammer(){
        System.out.println("father Constructor");
    }
}

class Child extends TestJavaGrammer{
    static
    {
        System.out.println("child static!!!");
    }

    {
        System.out.println("child NaN Static");
    }

    Child(){
        System.out.println("child Constructor");
    }

    public static void main(String[] args) {
        new Child();
    }
}

你可能感兴趣的:(Java创建子类——初始化顺序)