2022年2022年构造函数详解 .pdf
《2022年2022年构造函数详解 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年构造函数详解 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一. 构造函数构造函数是特殊的方法,构造函数是一个用来封装初始化的程序运行的时候是先初始化变量在调用构造函数的构造函数是一种特殊的成员函数,它主要用于为对象分配存储空间,对数据成员进行初始化.构造函数具有一些特殊的性质:(1) 构造函数的名字必须与类同名;(2) 构造函数没有返回类型,没有返回值,它可以带参数,也可以不带参数 ;(3) 声明类对象时 ,系统自动调用构造函数,构造函数不能被显式调用;(4) 构造函数可以重载,从而提供初始化类对象的不同方法;(5) 若在声明时未定义构造函数,系统会自动生成默认的构造函数,此时构造函数的函数体为空.(6) 静态构造函数 ,用 static 修饰,用于
2、初始化静态变量,一个类只允许有一个构造函数,在类实例化时加载,这时修饰符public 、private 失去作用 .(7) 可以使用 public 、protected 、private 修饰符。 .(8) 引用父类构造时用():base ()方法,引用自身重载的构造使用():this (int para ).(7) 可以使用 public 、protected 、private 修饰符。使用构造函数:构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与类相同的名称,它通常初始化新对象的数据成员。在下面的示例中, 使用一个简单的构造函数定义了名为Taxi 的类。 然后使用new运算符来
3、实例化该类。在为新对象分配内存之后,new 运算符立即调用Taxi 构造函数。public class Taxipublic bool isInitialized;public Taxi()isInitialized= true;class TestTaxistatic void Main()Taxi t = new Taxi();Console.WriteLine(t.isInitialized);不带参数的构造函数称为“ 默认构造函数 ” 。无论何时,只要使用new 运算符实例化对象,并且不为new 提供任何参数,就会调用默认构造函数。除非类是static的,否则C# 编译器将为无构造函数
4、的类提供一个公共的默认构造函数,以便该类可以实例化。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 通过将构造函数设置为私有构造函数,可以阻止类被实例化结构 类型的构造函数与类的构造函数类似,但是structs不能包含显式默认构造函数,因为编译器将自动提供一个构造函数。此构造函数会将struct中的每个字段初始化为默认值。然而,只有当struct 用new 实例化时,才会调用此默认构造函数。类和 structs都可以定义具有参数
5、的构造函数。带参数的构造函数必须通过new 语句或base语句来调用。类和structs还可以定义多个构造函数,并且二者均不需要定义默认构造函数。例如:public class Employeepublic int salary;public Employee( int annualSalary)salary = annualSalary;public Employee( int weeklySalary,int numberOfWeeks)salary = weeklySalary* numberOfWeeks;对于面的构造函数可以使用下列语句中的任一个语句来创建此类:Employeee1
6、= new Employee(30000);Employeee2 = new Employee(500,52);构造函数可以使用base关键字来调用基类的构造函数。例如:public class Manager : Employeepublic Manager( int annualSalary): base (annualSalary)/进一步的说明在这里添加在此示例中,基类的构造函数在执行构造函数块之前被调用。base 关键字可带参数使用,也可不带参数使用。构造函数的任何参数都可用作base的参数,或用作表达式的一部分。在派生类中,如果不使用base 关键字来显式调用基类构造函数,则将隐式
7、调用默认构造函数(如果有的话)。这意味着下面的构造函数声明在效果上是相同的:public Manager( int initialdata)/进一步的说明在这里添加public Manager( int initialdata): base ()名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - /进一步的说明在这里添加如果基类没有提供默认构造函数,派生类必须使用base显式调用基构造函数。构造函数可以使用this 关键字调用同一对
8、象中的另一构造函数。和base 一样, this 可带参数使用也可不带参数使用,构造函数中的任何参数都可用作this 的参数,或者用作表达式的一部分。例如,可以使用this 重写前一示例中的第二个构造函数:public Employee( int weeklySalary,int numberOfWeeks): this(weeklySalary* numberOfWeeks)上一示例中对this 关键字的使用导致此构造函数被调用:public Employee( int annualSalary)salary = annualSalary;构造函数可以标记为public 、private 、
9、protected 、internal或 protectedinternal 。这些访问修饰符定义类的用户构造该类的方式。使用 static关键字可以将构造函数声明为静态构造函数。在访问任何静态字段之前,都将自动调用静态构造函数,它们通常用于初始化静态类成员。实例构造函:实例构造函数用于创建和初始化实例。创建新对象时将调用类构造函数,例如:class CoOrdspublic int x, y;public CoOrds()x = 0;y = 0;public CoOrds( int x, int y)this .x = x;this .y = y;无论何时创建基于CoOrds类的对象,都会调
10、用此构造函数。诸如此类不带参数的构造函数称为“ 默认构造函数 ” 。然而,提供其他构造函数通常十分有用。例如,可以向CoOrds类添加构造函数,以便可以为数据成员指定初始值:如果类没有默认构造函数,将自动生成一个构造函数,并且将用默认值来初始化对象字段,例如,int 被初始化为0。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 这样便可以用默认或特定的初始值创建CoOrd对象,如下所示:CoOrds p1 = new CoOrd
11、s();CoOrds p2 = new CoOrds(5,3);注意:此类包含公共数据成员。建议不要使用这种编程方法,因为它使程序中任何位置的任何方法都可以不受限制、不经验证地访问对象的内部组件。数据成员通常应当为私有的,并且只应当通过类方法和属性来访问。实例:(类)class Employeeprivate string name;public string Nameget return name; set name = value; private int age;public int Ageget return age; set age = value; private int gong
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年构造函数详解 2022 构造 函数 详解
限制150内