《.NET程序员面试秘笈》----面试题7 构造函数有什么作用-阿里云开发者社区

开发者社区> 开发与运维> 正文

《.NET程序员面试秘笈》----面试题7 构造函数有什么作用

简介: 【考点】各种形态构造函数的理解,派生类的构造函数,构造函数的重载。

本节书摘来自异步社区《.NET程序员面试秘笈》一书中的第1章,面试题7,作者: 张云翯, 更多章节内容可以访问云栖社区“异步社区”公众号查看。

面试题7 构造函数有什么作用

.NET程序员面试秘笈
【考点】各种形态构造函数的理解,派生类的构造函数,构造函数的重载。

【出现频率】

【解答】

构造函数用于创建类的实例,并对实例进行初始化操作,通过不同的参数传递,可进行不同的实例初始化操作。本例通过多种不同形式的构造函数创建实例,并输出初始化的结果。在ch01目录下新建一个程序文件,并命名为Constructor.cs,编写代码如程序1.8所示。

image

image

在命令行下编译Constructor.cs后,执行Constructor程序,其效果如图1.10所示。

image

【分析】

前面的所有示例中都使用了构造函数,因为构造函数用于创建类的实例(对象)。在类中声明构造函数可对新实例(对象)进行初始化的操作,其编写方法如以下代码所示:

class 类名称
{
 访问修饰符 类名称()
 {
   初始化操作;
 }
}

可见,构造函数和类中的方法类似,也是一种函数,不过构造函数的名称必须和类名称相同。并且构造函数没有返回值,所以其函数签名和一般的函数有区别。没有参数的构造函数被称为默认构造函数,如果非静态类的类体中没有声明构造函数,类将自动提供一个默认构造函数,并将类成员初始化为默认值。

说明:

结构类型(Struct)是值类型,不需要显式声明默认构造函数,编译器将自动生成默认构造函数。当用new运算符实例化时默认构造函数才被调用,将成员初始化为默认值。
通过不同的参数传递,在类体中可声明多个构造函数,即实现构造函数的重载。其编写方法如以下代码所示:

class 类名称
{
 访问修饰符 类名称()
 {
   初始化操作1;
 }
 访问修饰符 类名称( 参数类型1 参数1......)
 {
   初始化操作2;
 }
 访问修饰符 类名称( 参数类型2 参数1......)
 {
   初始化操作3;
 }
}

在程序中创建该类的实例(对象)时,通过传递参数的不同,调用不同的构造函数进行不同的初始化操作。程序中创建实例(对象)的方法如以下代码所示:

类型名称 对象名称 = new 构造函数();     //默认构造函数
类型名称 对象名称 = new 构造函数(参数列表);

一般情况下,构造函数是实例构造函数,即可通过该构造函数在类外部创建类的实例。反之,如果需要阻止创建类的实例,可在声明私有的默认构造函数,这种情况一般用于无实例成员的类中。如果需要完成只执行1次的操作,可以声明静态构造函数。这种构造函数在创建实例前或引用静态成员前自动调用,一般用于对静态成员的操作。

说明:

无实例成员的类可声明为静态类,即无须声明私有的默认构造函数。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章