zoukankan      html  css  js  c++  java
  • C# 实例化类的执行顺序

    先进行细分:

    类的成员分为:字段、属性、方法、构造方法

    成员的修饰符:静态成员、实例成员

    层次结构:父类、子类


    先不考虑继承关系,执行顺序为:

    1. 静态字段
    2. 静态构造方法
    3. 实例字段
    4. 实例构造方法

    属性和方法是在调用的时候才执行,这里就不考虑了。如何理解上面的执行过程?假如让我来设计执行过程,我该如何考虑,依据是什么?

    首先,静态的东西是大家共享的,也就是相同的。应该先关心共享的东西,再关系个人的东西。“先公后私”,呵呵。

    其次,实例化之前,应该先初始化自己的内部数据。


    现在考虑继承关系,执行顺序为:

    1. 子类的静态字段
    2. 子类的静态构造方法
    3. 子类的实例字段
    4. 父类的静态字段
    5. 父类的静态构造方法
    6. 父类的实例字段
    7. 父类的实例构造方法
    8. 子类的实例构造方法

    在子类的实例字段和子类的实例构造方法之间,加入了父类的执行顺序。这个其实也很好理解:在子类的实例构造方法之前,确实需要知道父类的信息,因为子类要从父类那里继承一些东西。这就好比,没有老子,哪来的儿子呢,呵呵。


    这里需要特别注意的是,并不是每次实例化都是上面的顺序。因为静态的成员只是在第一次实例化的时候执行,以后再实例化都不会在执行。很好理解,静态的成员意味着大家共享,且只有这一个。第一次实例化得到静态成员后,以后大家都共享,再次实例化,没有必要也不允许执行静态成员的部分。

  • 相关阅读:
    第一章 第二节逻辑代数基础
    第一章 第一节数制与编码
    Altium Designer多原理图、PCB更新处理
    AD添加LOGO的方法
    XML中<beans>属性
    程序员值得学习的技术博客
    设计模式
    js分页实例
    Java构造和解析Json数据的方法
    H5+ 移动app学习之三 App离线存储
  • 原文地址:https://www.cnblogs.com/shineblog/p/2643447.html
Copyright © 2011-2022 走看看