zoukankan      html  css  js  c++  java
  • 父子类,实例、静态成员变量,构造函数的执行顺序

      今天去面试的时候被一道题问得一点脾气都没有,今天特地来研究下。

      子类成员变量,子类静态成员变量,子类构造函数,父类成员变量,父类静态成员变量,父类构造函数的执行顺序。

      现在贴上从另外一个.net程序员写的实例,稍微改下。

        public class ShowInfo
        {
            public ShowInfo(string info)
            {
                Console.WriteLine(info);
            }
        }
    
        class father
        {
            public static ShowInfo StaticFatherMember = new ShowInfo("父类静态成员变量执行"); //父类静态成员变量
            public ShowInfo InstanceFatherMember = new ShowInfo("父类实例成员变量执行");     //父类实例成员变量
            static father()         //父类构造函数  
            {
                ShowInfo StaticFatherMethod = new ShowInfo("父类静态构造函数执行");     //父类静态构造函数
            }
            public father()
            {
                ShowInfo bcsI = new ShowInfo("父类实例构造函数执行");
            }
        }
        class son : father
        {
            public static ShowInfo StaticSonMember = new ShowInfo("子类静态成员变量执行");
            public ShowInfo InstanceStaticSonMember = new ShowInfo("子类实例成员变量执行");
    
            static son()
            {
                ShowInfo StaticSonMethod = new ShowInfo("子类静态构造函数执行");
            }
            public son()
            {
                ShowInfo InstanceSonMethod = new ShowInfo("子类实例构造函数执行");
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                //各个对象的初始化顺序如下:  
                //①子类静态成员变量  
                //②子类静态构造函数  
                //③子类实例成员变量  
                //④父类静态成员变量  
                //⑤父类静态构造函数  
                //⑥父类实例成员变量  
                //⑦父类构造函数  
                //⑧子类构造函数  
                son s = new son();
                Console.ReadKey();
            }
        }  

    来看看最后的输出结果:

           1子类静态成员变量  
                2子类静态构造函数  
                3子类实例成员变量  
                4父类静态成员变量  
                5父类静态构造函数  
                6父类实例成员变量  
                7父类构造函数  
                8子类构造函数  

    看来除了构造函数,子类全部比父类先执行,其顺序是静态先于实例,变量先于函数。然后子父类实例函数都是最后执行。

  • 相关阅读:
    配置hbase
    hive配置
    scala及spark配置
    Eclipse 配置hadoop
    腾讯云部署hadoop
    助教总结
    预习非数值数据的编码方式
    预习原码补码
    学习java的第六周
    作业一总结
  • 原文地址:https://www.cnblogs.com/kissdodog/p/2950682.html
Copyright © 2011-2022 走看看