zoukankan      html  css  js  c++  java
  • Java类的成员初始化顺序

    Java类的成员初始化顺序

    2017-06-01

    代码:

    public class InitializeSequence
     {
        public static void main(String[] args)
        {
            new Son();
        }
    }
    
    class Father {
        static {
            System.out.println("1 父类静态代码块初始化");
        }
        {
            System.out.println("5 父类代码块初始化");
        }
    
        private static String s = print("2 父类静态实例");
        private String s1=print("6 父类实例");
    
        public static String print(String msg) {
            System.out.println(msg);
            return "父类静态成员变量的初始化";
        }
    
        public Father() {
            System.out.println("7 父类无参构造函数初始化");
        }
    }
    
    class Son extends Father {
        static {
            System.out.println("3 子类静态代码块初始化");
        }
        {
            System.out.println("8 子类代码块初始化");
        }
    
        private static String s = print("4 子类静态实例");
        private String s1=print("9 子类实例");
    
        public static String print(String msg) {
            System.out.println(msg);
            return "子类静态成员变量的初始化";
        }
    
        public Son() {
            System.out.println("10子类构造函数初始化");
        }
    }

    结果:

    1 父类静态代码块初始化
    2 父类静态实例
    3 子类静态代码块初始化
    4 子类静态实例
    5 父类代码块初始化
    6 父类实例
    7 父类无参构造函数初始化
    8 子类代码块初始化
    9 子类实例
    10子类构造函数初始化

    总结:

    1 先静态成员,后实例成员
    2 先父类,后子类
    3 先实例成员,后构造函数

    对比:c#类的成员初始化顺序

  • 相关阅读:
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    C语言I学期总结
  • 原文地址:https://www.cnblogs.com/Ming8006/p/6928514.html
Copyright © 2011-2022 走看看