【JAVA】继承时类的初始化顺序

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ALone_cat/article/details/94140936

我们可以编写程序查看:

//父类
class Test{
    public Test(){
        System.out.println("父类实例变量");
    }
}
class StaticTest{
    public StaticTest(){
        System.out.println("父类静态变量");
    }
}
class People{
    private Test test = new Test();
    private static StaticTest staticTest = new StaticTest();
    static{
        System.out.println("父类静态块");
    }
    {
        System.out.println("父类实例块");
    }
    public People(){
        System.out.println("父类构造方法");
    }
}
//子类
class TestS{
    public TestS(){
        System.out.println("子类实例变量");
    }
}
class StaticTestS{
    public StaticTestS(){
        System.out.println("子类静态变量");
    }
}
class Student extends People{
    private TestS tests = new TestS();
    private static StaticTestS staticTests = new StaticTestS();
    static{
        System.out.println("子类静态块");
    }
    {
        System.out.println("子类实例块");
    }
    public Student(){
        System.out.println("子类构造方法");
    }
}
//主函数
public class TestDemo {
    public static void main(String[] args){
       Student student = new Student();
    }
}

运行结果:

父类静态变量
父类静态块
子类静态变量
子类静态块
父类实例变量
父类实例块
父类构造方法
子类实例变量
子类实例块
子类构造方法

猜你喜欢

转载自blog.csdn.net/ALone_cat/article/details/94140936