• C# 实例化类的执行顺序


    先进行细分:

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

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

    层次结构:父类、子类


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

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

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

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

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


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

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

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


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

  • 相关阅读:
    java--volatile关键字
    java--线程异常处理器
    java--线程池
    Supervisor安装和使用
    网络协议--HTTP
    1.Nginx简介
    Nginx配置实战
    Redis面试题
    SpringBoot--集成swagger2
    缓存的优缺点
  • 原文地址:https://www.cnblogs.com/shineblog/p/2643447.html
Copyright © 2020-2023  润新知