zoukankan      html  css  js  c++  java
  • 构造函数,静态构造函数与继承链

    在.net的类中,如果没有给类添加任何构造函数,编译器将会给类自动添加一个默认构造函数,它的作用

    就是初始化该类的字段为默认值。构造函数在继承链中的层次结构的执行顺序是由上到下进行,从System

    .Object开始到要实例化的类为止。


    1,静态构造函数
    在.net中静态构造函数的作用就是初始化类中的静态字段,静态构造函数不需访问修饰符,也不能带任何

    参数,可以与无参数的构造函数共存,同时静态构造函数是由.net运行时调用的,而不能在程序中调用,

    这种特性决定在只有静态构造函数的类不能被实例化,也不能被其他类继承,这样说正确吗?
    先看一下这段代码:

     class  BaseClass
     
    {
         
    static BaseClass()
         
    {
         }

     }

     
    class DerivedClass : BaseClass
     
    {
        
    public DerivedClass()
        
    {
        }

     }


    按照上面的分析这段代码似乎应该不能编译通过,但实际上却能正确编译通过,所以我猜测,如果在一个

    类中只有一个静态函数,那么编译器依然会给类添加默认的构造函数

    2,看下面代码

     class  BaseClass
     
    {
         
    public int testid ;
         
    public BaseClass()
         
    {
         }

     }

     
    class DerivedClass : BaseClass
     
    {
        
    public DerivedClass()
        
    {
        }

     }

    在BaseClass提供了一个构造函数,那么编译器应该不会为类添加默认构造函数,同时在构造函数中也没

    有对testid进行初始化,但testid却实实在在有了初始值0,那么这又应该如何理解呢?

  • 相关阅读:
    sqoop导入数据到mysql原理_sqoop的详细使用及原理
    Attempt to do update or delete using transaction manager that does not support these operations
    impala安装
    stm32单片机时钟中断的配置
    jtag引脚
    关于芯片封装类型
    Altium Designer绘制mark点
    Altium Designer如何移动选中的所有对象
    Altium Designer敷铜的规则设定
    关于Altium Designer重新修改某一原件pcb封装的问题
  • 原文地址:https://www.cnblogs.com/kwklover/p/20966.html
Copyright © 2011-2022 走看看