C#中的构造函数,私有构造函数,静态构造函数以及构造函数的执行顺序

1.默认构造函数:如果类中没有定义构造函数那么程序会默认的为类创建一个无参数构造函数用以对类进行实例化,如果有构造函数的话,那么程序就不会创建默认构造函数

2静态构造函数,不能访问实例成员,只能用来初始化一些静态字段或者属性,仅在第一次调用类的任何成员时自动执行,不带访问修饰符,不带任何参数,每个类只能有一个静态构造函数,但可以同时还有一个无参实例构造函数,

3.私有构造函数:把访问的属性设置为私有,那么外部就不能通过new进行实例化访问类中的成员,可以在类的内部声明静态变量属性,进行实例化,通过静态构造方法,对类进行赋值优点如下:

  • 永远不会实例化,因为它仅用作某些静态成员的容器
  • 希望类只能通过调用某个静态方法来实例化(即所谓的对象实例化的类工厂方法)

构造函数的执行顺序:通常情况下实例化子类的时候,都是先执行父类的构造方法,然后执行子类的构造方法。但是对于子类当中有静态构造方法的时候会先执行子类当中的静态构造方法然后执行父类当中的静态构造方法,之后执行父类的构造方法,最后执行子类的构造方法,而且静态构造方法在程序运行的过程当中都只会执行一次

事例如下:

public class SuperClass
{
    static SuperClass() 
    {
        Console.WriteLine("Super.Static");
    }
    public SuperClass() 
    {
        Console.WriteLine("Super.Instance");
    }
}

//子类
public class ChildClass : SuperClass
{
    static ChildClass() 
    {
        Console.WriteLine("Child.Static");
    }
    public ChildClass() 
    {
        Console.WriteLine("Child.Instance");
    }
}

//客户程序
class Program
{
    static void Main(string[] args)
    {
        ChildClass cc = new ChildClass();
        Console.ReadKey();
    }
}

运行结果为:Child.Static

                     Super.static

                     Super.Instance

                     Child.Instance

注意:在不考了静态构造函数的情况下(因为静态构造仅执行一次,且定义静态构造函数的时候并不多),子类在调用父类的构造函数时,默认情况是调用父类的无参构造函数,如果父类只有带参构造函数,而没有无参构造函数,那么编译时会报错;不过我们可以通过base关键字来指定调用带参构造函数,如下

public class SuperClass
{
    public SuperClass(string param)
    {
        Console.WriteLine("Super:" + param);
    }
}

//子类
public class ChildClass : SuperClass
{
    public ChildClass(string param):base(param)
    {
        Console.WriteLine("Child:" + param);
    }
}

//客户程序
class Program
{
    static void Main(string[] args)
    {
        ChildClass cc = new ChildClass("param");
        Console.ReadKey();
    }
}

转载自https://www.cnblogs.com/ArtofDesign/p/3603986.html  主要是为了大家一起打好基础

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值