构造函数有什么作用_第1页
构造函数有什么作用_第2页
构造函数有什么作用_第3页
构造函数有什么作用_第4页
构造函数有什么作用_第5页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、构造函数有什么作用?构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与类相同的名称,它通常初始化新对象的数据成员。在下面的示例中,定义了一个具有一个简单的构造函数,名为Taxi的类。然后使用new运算符来实例化该类。在为新对象分配内存之后,new运算符立即调用Taxi构造函数。publicclassTaxi(publicboolisInitialized;publicTaxi()构造函数与类同名,可重载(/在类被实例化的时候自动调用一般用于初始化类的一些属性isInitialized=true;classTestTaxi(staticvoidMain()(Taxit=newTaxi(

2、);这时会自动运行Taxi类的构造函数Taxi()System.Console.WriteLine(t.islnitialized);)不带参数的构造函数称为“默认构造函数”。无论何时,只要使用new运算符实例化对象,并且不为new提供任何参数,就会调用默认构造函数。【考点】各种形态构造函数的理解,派生类的构造函数,构造函数的重载。【出现频率】【解答】构造函数用于创建类的实例,并对实例进行初始化操作,通过不同的参数传递,可进行不同的实例初始化操作。本例通过多种不同形式的构造函数创建实例,并输出初始化的结果。在目录下新建一个程序文件,并命名为Constructor.cs,编写代码如代码4.8所示

3、。代码4.8构造函数示例:Constructor.csusingSystem;classConstructor(staticvoidMain()(Console.Write("请输入篮球比赛的选手人数:");intinputA=Int32.Parse(Console.ReadLine();将用户输入值转换为int类型(这里没有作异常处理)Console.Write("请输入篮球比赛的MVP:");stringinputB=Console.ReadLine();Basketballbb=newBasketball。;/用Ba

4、sketball类的默认构造函数创建实例bbbb.getmsg();/实例bb调用getmsg方法Basketballbbb=newBasketball(inputA,inputB);/用Basketball类带2个参数的构造函数创建实例bbbbbb.getmsg();/实例bbb调用getmsg方法Footballfb=newFootball();/用Football类的默认构造函数创建实例fbfb.getmsg();实例fb调用getmsg方法Console.WriteLine("n本次游泳比赛的冠军是0队",Swim.champ);/直接访问Swim类

5、的静态字段/Shootsh=newShoot();此处代码将会被编译器报错,因为其默认构造函数为私有的classBasketballprivateint_playernum;privatestring_mvp;internalBasketball()internalBasketball(intn,stringm)_playernum=n;_mvp=m;internalvoidgetmsg()(Console.WriteLine("n这场篮球比赛的选手有0个,最有价值球员是1!",_playernum,_mvp);classFootballprivatestr

6、ing_star="Henry"internalvoidgetmsg()Console.WriteLine("n这场足球比赛的明星是0!",_star);classSwiminternalstaticstringchamp;staticSwim()静态构造函数,用于初始化静态成员(champ="中国")classShoot(internalstaticstringchamp=null;privateShoot()私有构造函数,无法在类外部创建实例()在命令行下编译Constructor.

7、cs后,执行Constructor程序,其效果如图4.10所示。图4.10构造函数示例本例的Main方法中,首先将用户第1次输入的值通过逗号分隔为2个字符串,然后分别赋值给PC类的静态字段,即cpu和memory。然后将用户的第2次输入也分隔为2个字符串,并转换为整数类型赋值给p和n。通过传递参数p和n给PC的构造函数创建实例,【分析】前面的所有示例中都使用了构造函数,因为构造函数用于创建类的实例(对象)。在类中声明构造函数可对新实例(对象)进行初始化的操作,其编写方法如以下代码所示。class类名称(访问修饰符类名称0(初始化操作;)可见,构造函数和类中的方法类似,也是一种函数,不过构造函数

8、的名称必须和类名称相同。并且构造函数没有返回值,所以其函数签名和一般的函数有区别。没有参数的构造函数被称为默认构造函数,如果非静态类的类体中没有声明构造函数,类将自动提供一个默认构造函数,并将类成员初始化为默认值。说明:结构类型(Struct)是值类型,不需要显式声明默认构造函数,编译器将自动生成默认构造函数。当用new运算符实例化时默认构造函数才被调用,将成员初始化为默认值。通过不同的参数传递,在类体中可声明多个构造函数,即实现构造函数的重载。其编写方法如以下代码所示。class类名称(访问修饰符类名称0(初始化操作1;)访问修饰符类名称(参数类型1参数1)(初始化操作2;)访问修饰符类名称(参数类型2参数1.)(初始化操作3;)在程序中创建该类的实例(对象)时,通过传递参数的不同,调用不同的构造函数进行不同的初始化操作。程序中创建实例(对象)的方法如以下代码所示。类型名称对象名称=new构造函数();/默认构造函数类型名称对象名称=new构造函数(参数列表);一般情况下,构造函数是实例构造函数,即可通过该构造函数在类外部创建类的实例。反之,如果需要阻

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论