第4章-面向对象程序设计入门.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.4 构造函数 4.4.1 构造函数的声明和调用 4.4.2 构造函数的重载 4.4.3 构造函数与只读字段 4.4.4 对象的生命周期和析构函数 返回 4.4.1 构造函数的声明和调用 构造函数是类中的一种特殊的方法,其一般形式如下: public 构造函数名([参数列表]) { [语句;] } 和普通方法相比,构造函数有两个特别要求,一是构造函数的名称必须和类名相同,二是构造函数不允许有返回类型(包括void类型)。 其中,构造函数的参数列表可省略,也可以不包含任何语句。不包含任何参数和语句的构造函数称为默认构造函数。如果没有定义构造函数,编译器将自动生成默认构造函数由,默认构造函数的形式如下: public 构造函数名(){ } 4.4.2 构造函数的重载 构造函数重载与方法一样可以重载。在一个类中,可以定义多个构造函数,以便对对象提供不同的初始化方法,以满足创建对象时的不同需要。例如,在创建一个Student对象时,只想指定name的值,而age为默认的20。可以声明一个如下所示的构造函数: public Student(string name) { this.name = name; this.age = 20; } 该构造函数和以上面的public Student(string name, int age)构造函数相比,参数的个数不同,是一个合法的构造函数。此时,可以声明一个只有一个实参的对象: Student stu = new Student(郭靖); 4.4.2 构造函数的重载 1.【实例4-9】利用构造函数重载实现不同对象实例化。 2.编写重载方法Sum求和 Sum(int a,int b)Sum(int a,int b,int c)Sum(folat a,folat b) 3.写一个学生类,包含学号,姓名,年龄,性别,住址,身份证号码,要求身份证号只能类自己访问,住址和年龄,只能被派生类访问,学号,姓名是公开的; * * 4. 写3个类动物(animal),狗(dog),猫(cat)类,狗,猫分别继承动物类; 动物类包含字段 名称,品种,颜色,方法 吃, 叫,派生类重写父类 的方法 (例如 输出 console.writeline(“这是狗/猫 叫”)); 5. 写2个方法交换值 Swap(int a,int b) Swap(ref int a, ref int b) 4.4.3 构造函数与只读字段 C#中类的字段成员可通过关键字readonly设置为只读字段,对于标记为只读的字段来说,只有在声明时为它赋值,或者在对象初始化时赋值。在声明时为只读字段赋值与声明常量没有区别,在对象初始化时为只读字段赋值需要使用构造函数实现。 4.4.3 构造函数与只读字段 【实例4-10】公园门票调价问题。 4.4.4 对象的生命周期和析构函数 C#程序中,一个对象是类的一个实例,实际上就是一个引用型的变量,在程序运行过程中,它需要占用一定的内存空间,.NET 的公共语言运行时负责为其分配内存。当程序运行结束后,需要回收它所占用的内存空间。 正如前面的介绍一样,.NET的公共语言运行时把值类型变量和引用型变量放在不同的内存区域中管理。 值类型变量使用“栈”来管理,栈是一种按照“先进后出”方式存取的内存区域。当方法被调用时,方法内的值类型变量(包括形参变量)自动获得内存,当方法调用结束时,这些变量所占用的内存将自动释放。 4.4.4 对象的生命周期和析构函数 引用型变量使用“堆”来管理,堆是分配对象时所使用的内存区域。在方法调用过程中,一旦使用运算符new创建了对象,.NET的公共语言运行时立即为该对象从堆中分配内存。 当方法调用结束时,对象所占用的内存并不会自动从堆中释放。在.NET中,对象所占用的内存只能由.NET的公共语言运行时的垃圾回收器来回收,垃圾回收器没有预定的工作模式,其工作时间间隔是不可预知的,垃圾回收器的优化引擎能根据分配情况确定回收的最佳时机。 4.4.4 对象的生命周期和析构函数 一个对象的生命周期可分为以下几个阶段: (1) 使用new运算符创建对象并要求获得内存; (2) 对象初始化,包括对象的数据成员的初始化; (3) 使用对象,包括访问对象的数据成员、调用对象的方法成员; (4) 对象释放前释放对象所占用的资源,如关闭磁盘文件、网络连接等; (5) 释放对象,回收内存(由垃圾回收器自动完成)。 其中,第2阶段可通过调用对象

您可能关注的文档

文档评论(0)

moon8888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档