https://blog.csdn.net/qq_26689533/article/details/70147943

class A {
    // static域
    static {
        System.out.println("类A static域");
    }

    // 非static域 直接括号内的内容是在创建java对象时执行,而且在构造器之前执行!
    {
        System.out.println("类A 非static域");
    }

    A() {
        System.out.println("Construct A");
    }

}

public class Aihuishou extends A {
    static {
        System.out.println("类Aihuishou static域");
    }

    {
        System.out.println("类Aihuishou 非static域");
    }

    public Aihuishou() {
        System.out.println("Construct Aihuishou");
    }

    public static void main(String[] args) {
        Aihuishou aihuishou = new Aihuishou();
    }

}

:注释非原题目所有 请写出代码运行输出结果?

答案:

类A static域 类Aihuishou static域 类A 非static域 Construct A 类Aihuishou 非static域 Construct Aihuishou 1 2 3 4 5 6 分析: 1、当程序运行时,第一件事就是找到函数入口所在的类,将该类进行加载。如果该类具有基类,则先加载基类,然后再加载派生类。 加载类的过程就是初始化类中的static域的过程。 2、在类加载完成后,进入程序入口,执行程序。如果程序中调用了某个类的构造器,则初始化该类的非static域。然后执行该类的构造函数。 如果该类具有基类,则先初始化基类的非static域,执行基类构造器里的函数。然后再初始化派生类。 ————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_26689533/article/details/70147943