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#类的成员初始化顺序

  • 相关阅读:
    KMP
    C. Three Base Stations
    Calculation 2 [HUD 3501]
    组合数 com(n,r)
    Keep Deleting [zoj 3643]
    LightSwitch V1.0 正式发布,配套控件收集 !
    微软 Lightswitch 学习研讨 QQ群:97010590
    IIS 7开发与管理完全参考手册
    电影 下载 地址收集
    2011年A股中报十大筹码集中王 (收藏)
  • 原文地址:https://www.cnblogs.com/Ming8006/p/6928514.html
Copyright © 2011-2022 走看看