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

    先进行细分:

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

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

    层次结构:父类、子类


     

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

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

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

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

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


     

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

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

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


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

    转载于:http://www.cnblogs.com/nzbbody/archive/2011/12/29/2306403.html

  • 相关阅读:
    Yantai
    Star War
    douban's woshang
    cannot change font's type in coreldraw
    LuXun said
    WaiTan
    free ubuntu disk前天就收到了寄来的光盘
    Winter Swimming
    before buy laptop买本本前,先来看看
    ubuntu beginer
  • 原文地址:https://www.cnblogs.com/dmhai/p/2910024.html
Copyright © 2011-2022 走看看