




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,章节目录,上一页,下一页,第3章 面向对象编程技术 3.1 类和对象 3.1.1 类和对象概述 现实生活中的类是人们对客观对象不断认识而产生的抽象的概念,而对象则是现实生活中的一个个实体。面向对象程序设计的类概念从本质上和人们现实生活中的类概念是相同的。 类是一种数据类型,在C#中,类分为两种:由系统提供的预先定义的,这些类在.NET框架类库中;用户定义数据类型。,2,章节目录,上一页,下一页,类:即类型,由具体相同的东西抽象出来的 对象:从某一种类型中有具体值的个体,在该对象上有字段,属性,事件及方法. 另外,类有封装继承多态等特性 在创建对象之前必须先定义该对象所属的类。有了类型后,才
2、能由类型声明相应的对象(变量)。 在Visual Studio.NET集成环境中的,工具箱中的一个个控件,是被图形文字化的可视的类,而把这些控件添加到窗体设计器中后,窗体设计器中的控件则是对象,即由工具箱中的类创建的对象.,3,1 类定义及数据成员定义 在类定义中需要使用关键字class,其简单的定义格式为: 类修饰符 class 类名 类体 “类名”是一个合法的C#标识符,表示数据类型(类类型)名称,“类体”以一对大括号开始和结束。在一对大括号后面可以跟一个分号,也可以省略分号。 类体中可以有数据成员,属性,事件,方法等,4,章节目录,上一页,下一页,例如: class Student /
3、类名为Student public string ID;/数据成员,字段 public string Name; public string Sex; 定义了一个名为“Student”(学生)的类,类体中包括学生的学号(“ID”)、姓名(“Name”)与性别(“Sex”)。,5,章节目录,上一页,下一页,“类体”包括类中的所有数据及对数据的操作,这种机制叫“封装”。 在“类体”中,所有的数据及对数据的操作的集合叫类成员,类成员的种类很多,本章仅介绍“字段”、“属性”、“方法”与“构造函数”。 “字段”是类定义中的数据,也叫类的变量。在上例中定义的“ID”、“Name”与“Sex”等均为类中的字
4、段。如果需要在类定义的多个方法中使用某个变量,该变量应该声明为字段。,6,章节目录,上一页,下一页,2.定义类中的方法 方法是把一些相关的语句组织在一起,用于解决某一特定问题(尤其是一些字段处理)的语句块。 方法必须放在类定义中。也就是说,方法必须是某一个类的方法。方法同样遵循先声明后使用的规则。 C#语言中的方法相当于其他编程语言(如VB.NET)中的通用过程(Sub过程)或函数过程(Function过程)。,7,章节目录,上一页,下一页,声明方法最常用的语法格式为: 访问修饰符 返回类型 方法名(参数列表) 方法的访问修饰符通常是public,以保证在类定义外部能够调用该方法。 方法的返回
5、类型用于指定由该方法计算和返回的值的类型,可以是任何值类型或引用类型数据,如,int、string及前面定义的Student类。如果方法不返回一个值,则它的返回类型为void。 “方法”实质上就是函数,通常用于对字段进行计算和操作,即对类中的数据进行操作,以实现特定的功能。,8,章节目录,上一页,下一页,方法名是一个合法的C#标识符。 参数列表在一对圆括号中,指定调用该方法时需要使用的参数个数、各个参数的类型,参数之间以逗号分隔。 实现特定功能的语句块放在一对大括号中,叫方法体,“”表示方法体的开始,“”表示方法体的结束。 如果方法有返回值,则方法体中必须包含一个return语句,以指定返回值
6、,其类型必须和方法的返回类型相同。如果方法无返回值,在方法体中可以不包含return语句,或包含一个不指定任何值的return语句。,9,例3.1: class Vehicle/定义类 protected int wheels;/定义数据成员,字段 protected float weight; public void SetVehicle(int wheels, float weight)/定义方法 this.wheels = wheels; this.weight = weight; public void GetVehicle() MessageBox.Show(车轮数: + this.
7、wheels.ToString() + n车重量: + this.weight.ToString(); ,10,3.定义类中的属性 “属性”用于读取和写入“字段”值,“属性”是字段的自然扩展,对用户而言,“属性”等同于“字段”本身,对程序员而言,属性是一种读写“字段”的特殊方法。,11,格式如下: class 类名 字段定义; 访问修饰符 数据类型 属性名 set . 字段名=value; get . return 字段名; 例3_2,12,章节目录,上一页,下一页,4. 声明与使用对象 (1). 声明对象 声明对象的格式与声明基本数据类型的格式相同,其语法格式为: 类名 对象名; 例如:St
8、udent s1; / 声明一个学生类对象s1 对象声明后,需用“new”关键字将对象实例化,。实例化的语法格式: 对象名=new 类名( ); 例如:s1=new Student( ); / 为s1分配内存,13,(2). 访问对象(成员) 访问对象实质是访问对象成员,对对象变量成员的访问使用“.”运算符。例如: 访问对象成员:s1.ID=2005001;s1.Name=张三; 访问对象方法:car1.SetVehicle(6,800) 访问对象属性:s1.Sex=女; 可以使用对象变量为另一对象变量整体赋值,例如,“Student s2;s2=s1;”或“Student s2= s1;”(
9、这是引用类型)。 可以使用对象中的某一成员为变量赋值。例如: string sName=s1.Name; 例:33,14,章节目录,上一页,下一页,例:class Student / 类名为Student private string name; / 声明字段 public string Name / 对应name的属性 get return name; set name=value; ,15,章节目录,上一页,下一页,声明只读或只写属性 在属性声明中,如果只有get访问器,则该属性为只读属性。例如: public string Sex get return sex; ,16,章节目录,上一页
10、,下一页,5 构造函数 构造函数是一种特殊的方法成员,构造函数的主要作用是在创建对象(声明对象)时初始化对象。一个类定义必须且至少有一个构造函数,如果定义类时,没有声明构造函数,系统会提供一个默认的构造函数,如果声明了构造函数,系统将不再提供默认构造函数。,17,章节目录,上一页,下一页,(1) 声明构造函数 声明构造函数与声明普通方法相比,有两个特别要求,一是构造函数不允许有返回类型包括void类型,二是构造函数的名称必须与类名相同。 所以构造函数往往需要使用形参,例如创建一个学生类对象时,需要给出学生的学号、姓名、性别及年龄等,所以学生类构造函数可以声明如下: public Student
11、(string ID,string nname,string ssex,int aage) id=ID; name=nname; sex=ssex; age=aage;,18,章节目录,上一页,下一页,(2)构造函数的调用 创建对象时自动调用。 如果声明了带参数的构造函数,所以系统不再提供默认构造函数,这样在创建对象时,必须按照声明的构造函数的参数要求给出实际参数,否则将产生编译错误,例如: Student s1=new Student(“2005001”,“张三”,“女”,21); 由上述创建对象的语句可知,new关键字后面实际是对构造函数的调用。,19,章节目录,上一页,下一页,(3) 重
12、载构造函数 一个类中可以有多个构造函数,调用时根据参数不同会自动调用那一个构造函数。 例如为学生类重载一个只初始化姓名的构造函数,代码如下: public Student(string nname) name=nname; 如果在声明了带参数的构造函数后,还想保留默认构造函数,则必须显式声明一个默认构造函数。以Student类为例,声明默认构造函数如下: public Student( ) / 显式声明默认构造函数 例:35,20,20,3.3 类的继承,继承是面向对象程序设计中实现代码重用的重要机制之一,它起源于现实世界中事物之间的联系。 基类(父类): 派生类: 类的继承的基本格式与功能如
13、下。 格式: class 派生类类名:基类类名 /注与C+不同,少了继承关键字 成员声明列表; 注:C中的派生类中只能继承一个类,派生类将继承基类 除构造函数和析构函数外的其他所有成员。例3.6,21,21,3.4 多态性(重写),多态性是指同一操作作用于不同类的实例,这些类对它进行不同的解释,从而产生不同的执行结果的现象。 在C#中有两种多态性:编译时的多态性和运行时的多态性。 运行时的多态性是通过继承和虚成员来实现的。运行时的多态性是指系统在编译时不确定选用哪个重载方法,而是直到程序运行时,才根据实际情况决定采用哪个重载方法。 编译时的多态性具有运行速度快的特点,而运行时的多态性则具有极大
14、的灵活性。 例3_9,22,22,using System; class BaseClass /基类 public void NVMeth()/定义基类的非虚方法 Console.WriteLine(调用了基类BaseClass类的非虚方法NVMeth); public virtual void VMeth()/定义基类的虚方法 Console.WriteLine(调用了基类BaseClass类的虚方法NMeth); class InClass:BaseClass /定义派生类 new public void NVMeth()/定义派生类的非虚方法,用new关闭警告 Console.WriteLine(调用了派生类InClass类的非虚方法NVMeth); public override void VMeth()/定义派生类的虚方法,使用override进行重载 Console.WriteLine(调用了派生类InClass类的虚方法NMeth); class Test public static void M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国家庭影院音频和视频接收器市场全景分析及前景机遇研判报告
- 设计单位质量管理制度
- 评估监理补贴管理制度
- 诊所医用织物管理制度
- 诊疗技术准入管理制度
- 试验耗材订购管理制度
- 财务资金结算管理制度
- 财政行政票据管理制度
- 货物消毒价格管理制度
- 货运运价分离管理制度
- 房东避险租房合同模板
- 基坑安全培训课件
- 2024年华东师范大学第二附中自主招生数学试卷真题(含答案详解)
- 充电桩巡查记录表
- 建筑装饰装修工程验收标准及流程
- 供电可靠性理论考试题库大全-下(填空题)
- 社工沟通技巧课件
- 全国现场流行病学调查职业技能竞赛考试题及答案
- 接地实验报告
- 七年级英语下学期期末考试(无锡卷)七年级英语下册单元重难点易错题精练(牛津译林版)
- 工厂绿植租赁及摆放服务方案
评论
0/150
提交评论