博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《.NET程序员面试秘笈》----面试题7 构造函数有什么作用
阅读量:5948 次
发布时间:2019-06-19

本文共 1206 字,大约阅读时间需要 4 分钟。

本节书摘来自异步社区《.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次的操作,可以声明静态构造函数。这种构造函数在创建实例前或引用静态成员前自动调用,一般用于对静态成员的操作。

说明:

无实例成员的类可声明为静态类,即无须声明私有的默认构造函数。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

你可能感兴趣的文章
使用Intellij创建springboot项目Spring Initializr Error 403
查看>>
0617 - 只做核心业务
查看>>
使用MVVM尝试开发Github客户端及对编程的一些思考
查看>>
算法-基础(一)数组基本操作 和 静态方法(后面编写算法的时候会用到)
查看>>
浏览器安全之同源策略
查看>>
把vue-cli build的结果放到服务器上
查看>>
JSON入门看这一篇就够了
查看>>
vue + vuex + koa2开发环境搭建及示例开发
查看>>
(二)神经网络入门之Logistic回归(分类问题)
查看>>
秒杀流量控制的执行方案
查看>>
[译][摘录]HEVC编码中的多视域和3D扩展,第四部分:3D-HEVC编码技术
查看>>
BEM命名 css模块化解决方案
查看>>
使用Tower克隆gitLab项目
查看>>
前端js压缩图片并上传
查看>>
我的Java设计模式-工厂方法模式
查看>>
线程存储简介
查看>>
WEEX系列 我的第一个WEEX DEMO
查看>>
Deploy NodeJS Docker to QiO Edge Cloud using Kubernetes
查看>>
【Hadoop学习】HDFS基本原理
查看>>
关于解决IE8以下版本获取DOM节点的方法
查看>>