类的构造函数



1、类的构造函数

类的构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与类相同的名称,它通常初始化新对象的数据成员。构造函数因修饰符的不同可以分为三种:普通构造函数、私有构造函数、静态构造函数。

如果非静态类没有定义构造函数,则C# 编译器将提供一个不带参数的构造函数称为“默认构造函数”,且该构造函数为普通构造函数。

普通构造函数:用于使用new运算符来实例化一个类对象时,在为新对象分配内存之后,new 运算符立即调用构造函数。

私有构造函数:可阻止类被实例化。

静态构造函数:用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。

2、构造函数的继承

派生类在定义构造函数时,可以使用关键字:base(??)或:this(??)。如没有显示的使用:base(??)或:this(??),则默认为:base()

base关键字用于调用的基类构造函数;this关键字用于引用派生类本身的构造函数。

如果基类有私有构造函数,且修饰符是priavte,则派生类无法使用:base(??)来继承,只能使用基类其他的构造函数使用:this(??)来引用。可用来对某些构造函数进行封装。

如果基类有静态构造函数,则该静态构造函数无法被派生类继承

构造函数的执行顺序为:先从派生类--类--System.Object的逆推上去,然后再从System.Object--类--派生类的执行,

如果在继承时显式的使用:base(??),则执行引用的构造函数。

如果在继承时显式的使用:this(??),则先执行引用构造函数,再执行引用构造函数调用的基类构造函数。

如果在逆推时不成功,则C# 编译器会报错。

例:

class A

{

    public A(String Str)

    {

        Name = Str;

    }

    public String Name = "";

}

class B : A

{

    public B(String Str)

    {    

    }

}

B B1 = new B();

逆推: B(String Str)--(默认继承自:base())--A()--System.Object()

A定义了一个带参数的构造函数,B虽然定义了一个与基类带相同参数的构造函数,但是没有显式的使用:base(Str),说明它是默认的继承:base()构造函数,故在编译时报错。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值