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子类构造函数  

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

  • 相关阅读:
    测试方案写作要点
    [loadrunner]通过检查点判定事务是否成功
    【面试】如何进行自我介绍
    【nginx网站性能优化篇(1)】gzip压缩与expire浏览器缓存
    【nginx运维基础(6)】Nginx的Rewrite语法详解
    【PHPsocket编程专题(实战篇①)】php-socket通信演示
    【Linux高频命令专题(22)】gzip
    【nginx运维基础(5)】Nginx的location攻略
    【Linux高频命令专题(21)】df
    【PHPsocket编程专题(理论篇)】初步理解TCP/IP、Http、Socket.md
  • 原文地址:https://www.cnblogs.com/kissdodog/p/2950682.html
Copyright © 2011-2022 走看看