- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 面向对象编程技术
面向对象的程序设计方法是当前程序设计的大势所趋。面向对象的程序设计方法是对结构化程序设计方法的重新认识。在程序的设计中,方法总是与特定的数据结构密切相关的,方法含有对数据结构的访问,特定的方法只适用于特定的数据结构,因此方法与数据结构在编程中应该是一个密不可分的整体,这个整体叫对象。
C#通过类、对象、继承、多态等机制形成一个完善的面向对象的编程体系。
4.1 类和对象
类是C#程序设计的基本单位。
4.1.1 类和对象概述
现实生活中的类是人们对客观对象不断认识而产生的抽象的概念,而对象则是现实生活中的一个个实体。例如,人们在现实生活中接触了大量的汽车、摩托车、自行车等实体,从而产生了交通工具的概念,交通工具就是一个类,而现实生活中的具体的汽车、摩托车自行车等则是该类的对象。
面向对象程序设计的类从本质上和人们现实生活中的这一认识过程是相同的。例如在编程实践中,人们经常使用按钮这一控件,每一个具体的按钮是一个按钮对象,而按钮类则是按钮对象的抽象,并且人们把这一抽象用计算机编程语言表示为数据集合与方法集合的统一体,然后再用这个类创建一个个具体的按钮对象。
可以把类比作一种蓝图,而对象则是根据蓝图所创建的实例,可以把类比作生产模具,而对象则是由这种模具产生的实例(产品)。所以人们又把对象叫做类的实例。类是对事物的定义,而对象则是该事物本身。
在Visual Studio.NET集成环境中的,工具箱中的一个个控件,是被图形文字化的可视的类,而把这些控件添加到窗体设计器中后,窗体设计器中的控件则是对象,即由工具箱中的类创建的对象。
类是一种数据类型,在C#中,类这种数据类型可以分为两种:一种是由系统提供的预先定义的,这些类在.NET框架类库中;一种是用户定义数据类型。在创建对象之前必须先定义该对象所属的类。然后由类声明对象。
类本质上是一种数据类型,所以类的用法与基本数据类型的用法基本相同,事实上,在Visual Studio.NET中像int、float等基本数据类型也是特殊的类。那么,用基本数据类型可以声明变量,用类类型也可以声明变量,只不过类类型的变量叫类的对象或类的实例。
4.1.2 类定义
类定义的格式与结构定义的格式相似,在类定义中需要使用关键字class,其简单的定义格式为:
class 〈类名〉{类体}
“类名”是一个合法的C#标识符,表示数据类型(类类型)名称,“类体”以一对大括号开始和结束,在一对大括号后面可以跟一个分号。
例如:
class student //类名为student
{
public string ID;
public string Name;
public bool Sex;
}
上例中,定义了一个名为“student”(学生)的类,类体中包括学生的学号(“ID”)、姓名(“Name”)与性别(“Sex”)。
在上例的“类体”中声明的数据都使用“public”修饰,“public”(公共的)表示这些数据可以直接进行访问。
如果仅从“student”类的定义形式看,其与结构类型除了关键字外几乎没有任何差别。当然这只是为了说明问题方便,这种定义方式并不符合面向对象程序设计的原则,因为类中缺少了对数据的操作。
“类体”包括类中的所有数据及对数据的操作,面向对象程序设计将数据与对数据的操作作为一个整体,以类的形式进行定义,这种机制叫“封装”。
在“类体”中,所有的数据及对数据的操作的集合叫类成员,类成员的种类很多,本章仅介绍“字段”、“属性”、“方法”与“构造函数”。
“字段”是类定义中的数据,也叫类的变量。在上例中定义的“ID”、“Name”与“Sex”等均为类中的字段。
“属性”用于读取和写入用于计算和操作S1.ID=12345;
S1.Name=张三;
S1.Sex=true;
上面的代码为对象S1数据成员赋值。
可以使用对象变量为另一对象变量整体赋值,例如,“student S2;S2=S1;”或“student S2= S1;”。这时,不需要使用new关键字对“S2”初始化。
可以使用对象中的某一成员。例如:
string sName=S1.Name; //将对象S1的Name成员值赋给字符串变量sName
4.1.4 值类型与引用类型
类定义的类型与结构定义的类型虽然相似,但这两种类型却有很大的差别,这涉及到C#中变量存储方式的问题。
从变量的存储方式看,C#中的变量可以分为值类型变量与引用类型变量。
1. 值类型
值类型变量直接包
文档评论(0)