版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3.1类,在面向对象程序设计中,类被作为一种数据结构,是包含数据成员、函数成员和嵌套类型的数据结构。类声明属性类修饰符class类名类体类修饰符包括new、public、protected、internal、private、abstract和sealed。,【例3-1】定义一个Person类,创建类实例,格式为:类名实例名=new类名(参数);两种形式PersonmyTest=newPerson();或PersonmyTest;myTest=newPerson();,类成员,类成员分为两大类,类本身定义的成员和从基类继承来的成员。类成员包括函数成员和数据成员。1类成员访问修饰符访问修饰符用于指
2、定类成员的可访问性。共有public、private、protected和internal四个类成员访问修饰符。,2静态成员与实例成员,当用static修饰符声明成员时,得到静态成员,静态成员属于类,为这个类的所有实例所共享不用static修饰符声明的成员,称为实例成员,实例成员被类的实例所拥有。,构造函数和析构函数,构造函数用于为对象分配空间,完成初始化工作。构造函数特殊性表现在:构造函数的名字必须与类名相同;构造函数可以带参数,但没有返回值;构造函数在对象定义时被自动调用;如果没有给类定义构造函数,则编译系统会自动生成一个缺省的构造函数,其形式如下:publiccon():base()构造
3、函数可以被重载,但不可以被继承。,实例构造函数用于创建和初始化实例,创建新对象时要调用实例构造函数,其格式为:访问修饰符类名(形参列表)函数体静态构造函数用于初始化静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。其格式为:static类名()函数体,析构函数主要用于释放类实例。析构函数特殊性表现在:析构函数的名字与类名相同,但它前面加一个“”符号;析构函数不能够带参数,也没有返回值;当撤销对象时,自动调用析构函数;析构函数不能被继承,也不能被重载。,【例3-3】使用构造函数和析构函数,方法,方法是表现类或对象行为的成员函数。1.方法声
4、明声明格式:方法修饰符返回类型方法名(形参列表)方法体修饰符包括:new、public、protected、internal、private、static、virtual、sealed、override、abstract和extern。,2.方法参数,(1)值参数未用任何修饰符声明的参数为值参数。(2)引用参数用ref修饰符声明的参数为引用参数。在方法中对引用参数的任何更改都会反映给实参。(3)输出参数用out修饰符声明的参数称为输出参数。如果希望函数返回多个值,可使用输出参数。,【例3-4】使用值参数,【例3-5】使用引用参数,(4)参数数组,用params修饰符声明的变量称为参数数组,它允
5、许向函数传递个数变化的参数。,【例3-6】使用输出参数,【例3-7】使用参数数组,3.静态方法和实例方法,用static修饰符声明的方法为静态方法,它不与实例相关联,它属于类。只需要类名和方法名就可调用静态方法未用static修饰符声明的方法为实例方法。它与特定实例相关联。可以用this来访问该实例。实例方法可以访问类中的任何成员。,【例3-8】使用静态方法和实例方法,4.方法重载,它允许一个类中有同名的方法存在为了区分这些同名方法,要求方法有不同的参数,要么参数个数不同,要么参数类型不同。,【例3-9】使用方法重载,5.运算符重载,运算符重载可以对C#中已有的运算符赋予新的功能。其格式为:p
6、ublicstatic返回值类型operatorunary-operator(参数列表)方法体,【例3-10】重载Point类的和,6.this关键字,this关键字引用类的当前实例,成员通过this关键字可以知道自己属于哪一个实例。this关键字是一个隐含引用,它隐含于每个类的成员函数中。this的常用用途:限定被相似的名称隐藏的成员将对象作为参数传递到其他方法声明索引器,字段与属性,1.字段字段表示与对象或类相关联的变量。静态字段:用static修饰符声明的字段,无论存在多少个类实例,它们都共享一个静态字段拷贝。实例字段:没用static修饰符声明的字段,类的每个实例都包含实例字段的一个拷
7、贝。只读字段:用readonly修饰符声明的字段,它只能在字段声明或构造函数中赋值,在其它任何地方都不能改变只读字段的值。,【例3-11】使用字段,2.属性,属性用于刻画对象的特征或表示对象的状态,它提供对类或对象性质的访问。其格式为:访问修饰符数据类型属性名getget访问器代码块setset访问器代码块set访问器:给属性赋值,它使用value设置属性的值get访问器:获取属性值,它通过return返回属性的值。如果只有get访问器,表示是只读属性;如果只有set访问器,表示只写属性;如果既有get访问器,也有set访问器,表示读写属性。,【例3-12】使用属性,继承,继承是面向对象程序设
8、计的一个重要特征,它允许在既有类的基础上创建新类,新类从既有类中继承类成员,而且可以重新定义或加进新的成员,从而形成类的层次或等级。一般称被继承的类为基类或父类,而称继承后产生的类为派生类或子类。,C#继承有如下重要性质:,C#只允许单继承,即派生类只能有一个基类;C#的继承是可传递的,如果C从B派生,而B从A派生,那么C就会既继承在B中声明的成员,又继承在A中声明的成员;派生类扩展它的直接基类,即派生类可以添加新的成员,但不能删除从基类继承的成员;构造函数和析构函数不能被继承;派生类可以隐藏基类的成员,如果在派生类中声明了与基类同名的新成员时,基类的该成员在派生类中就不能被访问到。,1.派生
9、类的声明,类修饰符class类名:基类类体,【例3-13】从Person类派生Employee,2.base关键字,base关键字用于从派生类中访问基类的成员,它有两种基本用法:指定创建派生类实例时应调用的基类构造函数,用于调用基类的构造函数完成对基类成员的初始化工作;在派生类中访问基类成员。3.成员隐藏在派生类中,通过声明与基类同名的新成员可以隐藏基类的成员,多态,多态性是指不同对象收到相同消息时,会产生不同动作。从而实现“一个接口,多种方法”。C#支持两种多态性:编译时多态性,是在程序编译时就决定如何实现某一动作,是通过方法重载和运算符重载实现的。是运行时多态性,是在运行时动态实现某一动作
10、,是通过继承和虚成员实现的。,【例3-15】通过虚方法实现多态性,抽象类,抽象类表示一种抽象的概念,用来为它的派生类提供一个公共接口。声明类抽象类:加上abstract修饰符抽象类只能作为其它类的基类,不能实例化。抽象类可以包含抽象方法和抽象访问器,也可以包含实例字段和非抽象方法,【例3-16】使用抽象类,【例3-16】使用抽象类,3.2接口,接口并不提供实现。它只表示一种约定,实现接口的类或结构必须遵守该接口定义的约定。接口声明格式:接口修饰符interface接口名:基接口接口体,例声明一个IShape接口publicinterfaceIShapedoubleArea();stringTy
11、peget;注意:接口的所有成员都被定义为公有的,使用其它修饰符是错误的;接口不能包含常量、域;接口不能包含构造函数、析构函数和静态成员。,【例3-23】实现IShape接口。,3.4委托与事件,委托属于引用类型,用于封装方法(函数)的引用使用委托的步骤:委托声明;委托实例化;委托调用。委托声明的格式:修饰符delegate返回值类型标识符(形参列表);委托实例化用于创建委托实例。与类实例创建的语法相同,委托,例3-28冒泡法排序,classProgramstaticvoidMain(stringargs).;Selects=newSelect();Sort.Comparecp=newSort
12、.Compare(s.Ascending);Sort.BubbleSort(ElementArray,cp);cp+=newSort.Compare(s.Descending);Sort.BubbleSort(ElementArray,cp);,事件,对象之间的交互是通过消息传递来实现的,而事件就是对象发送的消息,通过发信号的形式通知操作的发生。事件声明的具体格式为:属性集修饰符event委托类型事件名;,例3-31使用C#事件,显示当前时间,例使用C#事件,显示当前时间publicdelegatevoidTimeEventHandler(strings);/委托声明classMyTimepu
13、bliceventTimeEventHandlerTimer;/声明事件publicvoidOnTimer(strings)if(null!=Timer)Timer(s);/引发事件classProcessTimepublicvoidGenerateTime(strings)/事件处理Console.WriteLine(Hello0!Thetimeis1now,s,DateTime.Now);classTestTimestaticvoidMain(stringargs)ProcessTimep=newProcessTime();MyTimet=newMyTime();/把事件与事件处理联系起来t.Timer+=newTimeEventHandler(p.GenerateTime);t.OnTim
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年江西省共青城市高三生物上册期末考试模拟卷重点附答案
- 2025年江西省樟树市高三生物上册期末考试模拟卷含答案(突破训练)
- 2025年吉林省临江市高三生物上册期末考试模拟卷有答案
- 2025年辽宁省大石桥市高三生物上册期末考试模拟考试卷带答案(培优B卷)
- 2025年河北省迁安市高三生物上册期末考试模拟试卷及完整答案(历年真题)
- 2025年吉林省延吉市高三生物上册期末考试模拟试卷附答案【典型题】
- 用计算器探索规律-任务单
- 2025年吉林省珲春市高三生物上册期末考试模拟检测卷及参考答案(完整版)
- 2025年吉林省集安市高三生物上册期末考试模拟测试卷带答案(突破训练)
- 2026年浙江省余姚市高三生物上册期末考试模拟检测卷【预热题】附答案
- 2026年注册安全工程师(初级安全生产管理)试题及答案
- 部队文职面试答题技巧
- 泌尿系肿瘤MDT技能优化策略
- 昆明理工大学《分子生物学大实验》2025-2026学年第一学期期末试卷
- 储能项目施工组织设计
- 铁塔调校施工方案
- 企业反舞弊培训
- 外科清创缝合术课件
- 四年级数学下册期末高频易错押题提分卷(苏教版)含解析
- 【课件】重生之我是学霸 2025-2026学年高二上英语开学第一课
- 不得诋毁对方的协议书
评论
0/150
提交评论