admin 管理员组文章数量: 1087135
2024年5月21日发(作者:中国spark网站)
一
.
构造函数
构造函数是特殊的方法,
构造函数是一个用来封装初始化的
程序运行的时候是先初始化变量在调用构造函数的
构造函数是一种特殊的成员函数,它主要用于为对象分配存储空间,对数据成员进行初始化.
构造函数具有一些特殊的性质:
(1)构造函数的名字必须与类同名;
(2)构造函数没有返回类型,没有返回值,它可以带参数,也可以不带参数;
(3)声明类对象时,系统自动调用构造函数,构造函数不能被显式调用;
(4)构造函数可以重载,从而提供初始化类对象的不同方法;
(5)若在声明时未定义构造函数,系统会自动生成默认的构造函数,此时构造函数的函数体为空.
(6)静态构造函数,用static修饰,用于初始化静态变量,一个类只允许有一个构造函数,在类实例化时加
载,这时修饰符public、private失去作用.
(7)可以使用public、protected、private修饰符。.
(8)引用父类构造时用():base()方法,引用自身重载的构造使用():this(intpara).
(7)可以使用public、protected、private修饰符。
使用构造函数:
构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与类相同的名称,它通常初始化
新对象的数据成员。
在下面的示例中,使用一个简单的构造函数定义了名为Taxi的类。然后使用new运算符来实例化
该类。在为新对象分配内存之后,new运算符立即调用Taxi构造函数。
publicclassTaxi
{
publicboolisInitialized;
publicTaxi()
{
isInitialized=true;
}
}
classTestTaxi
{
staticvoidMain()
{
Taxit=newTaxi();
ine(ialized);
}
}
不带参数的构造函数称为“默认构造函数”。无论何时,只要使用new运算符实例化对象,并且不为
new提供任何参数,就会调用默认构造函数。
除非类是static的,否则C#编译器将为无构造函数的类提供一个公共的默认构造函数,以便该类
可以实例化。
通过将构造函数设置为私有构造函数,可以阻止类被实例化
结构类型的构造函数与类的构造函数类似,但是structs不能包含显式默认构造函数,因为编译器将
自动提供一个构造函数。此构造函数会将struct中的每个字段初始化为默认值。然而,只有当struct用
new实例化时,才会调用此默认构造函数。
类和structs都可以定义具有参数的构造函数。带参数的构造函数必须通过new语句或base语句
来调用。类和structs还可以定义多个构造函数,并且二者均不需要定义默认构造函数。例如:
publicclassEmployee
{
publicintsalary;
publicEmployee(intannualSalary)
{
salary=annualSalary;
}
publicEmployee(intweeklySalary,intnumberOfWeeks)
{
salary=weeklySalary*numberOfWeeks;
}
}
对于面的构造函数可以使用下列语句中的任一个语句来创建此类:
Employeee1=newEmployee(30000);
Employeee2=newEmployee(500,52);
构造函数可以使用base关键字来调用基类的构造函数。例如:
publicclassManager:Employee
{
publicManager(intannualSalary):base(annualSalary)
{
//进一步的说明在这里添加
}
}
在此示例中,基类的构造函数在执行构造函数块之前被调用。base关键字可带参数使用,也可不带参数
使用。构造函数的任何参数都可用作base的参数,或用作表达式的一部分。
在派生类中,如果不使用base关键字来显式调用基类构造函数,则将隐式调用默认构造函数(如果有的
话)。这意味着下面的构造函数声明在效果上是相同的:
publicManager(intinitialdata)
{
//进一步的说明在这里添加
}
publicManager(intinitialdata):base()
版权声明:本文标题:构造函数详解 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1716268249a692608.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论