




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六面向对象编程基础演示文稿当前1页,总共36页。优选第六面向对象编程基础当前2页,总共36页。面向对象编程的基本概念面向对象编程(Object-OrientedProgramming)简称OOP技术。面向对象编程的总体思路是:将数据及处理这些数据的操作都封装到一个称为类(Class)的数据结构中,在程序中使用的是类的实例——对象。对象是代码与数据的集合,是封装好了的一个整体,对象具有一定的功能。程序是由一个个对象构成的,对象之间通过一定的“相互操作”传递消息,在消息的作用下,完成特定的功能。对象=(算法+数据结构)程序=(对象+对象)当前3页,总共36页。面向对象编程的特点面向对象编程方式具有封装、继承及多态性等特点。封装性:
类是属性和方法的集合,为了实现某项功能而定义类后,开发人员并不需要了解类体中的每句代码的具体含义,只需通过对象来调用类中的某个属性或方法即可实现某项功能,这就是类的封装性。例如:在使用电脑时,并不需要将电脑拆开了解每个部件的作用,用户只需按下Power键就可以启动电脑,在键盘上敲打就可以将文字输入到电脑,但电脑内部的构造用户可能不需要了解,这就是封装性的具体体现。当前4页,总共36页。通过继承可以创建子类和父类之间的层次关系,子类可以从其父类中继承属性和方法。例如:水果看成父类,那么水果具有颜色属性,然后定义一个苹果类,在定义苹果类时完全可以不定义苹果类的颜色属性,通过继承,苹果具有了水果类的颜色属性。class水果类{public颜色//在水果类中定义的颜色属性}class苹果类:水果类{//在苹果类中定义其他的属性和方法}继承性当前5页,总共36页。多态性类的多态指不同的类进行同一操作可以有不同的行为。例如:定义了一个汽车类和火车类,他们都可以移动,说明了两者在这方面可以进行相同的操作。然而,火车和汽车的移动是截然不同的,因为火车必须在铁轨上行驶,而汽车在公路上行驶。当前6页,总共36页。类的定义和对象的声明类的定义: 通常把具有同样性质和功能的东西所构成的集合叫作类。类是C#程序设计的基本单位,用类声明的变量称为”类的实例”或”类的对象”.类和对象:1.类是一种类型定义;对象则是该类型的一种实例,在程序运行时创建。2.类是一种数据结构,用来模拟现实中存在的对象和关系,包含静态的属性和动态的方法。示例:所有学生都具有共同的行为(考试和上课)和基本的属性(学号,所在的班级等)。当前7页,总共36页。[类修饰符]class类名[:基类类名] { 成员定义列表;(编写属性,方法,事件等代码) }
注意:除了class关键字和类名外,剩余的都是可选的。类修饰符可以是abstract,sealed,public,protected,internal之一。
abstract:抽象类,不允许建立类的实例,只能继承。sealed:密封类,不允许被继承,只能实例化,只能在当前项目中访问
public:不限制对该类的访问,类可在任何地方访问。protected:对其所在的类以及类的子类进行访问。internal:只能在当前项目中访问(默认值)。类的声明当前8页,总共36页。对象:是从类定义实例化,这表示创建类的一个实例.声明对象:类名对象名;例如:Students;//声明一个Student类的对象s实例化对象: 在声明对象之后,需要使用new关键字将对象实例化。对象名=new类名();例如:s=newStudent();//实例化s,为s分配内存空间访问对象: 访问对象,实质就是访问对象成员,使用”.”运算符。例如:s.age=22;//给s的数据成员赋值
对象的创建当前9页,总共36页。类的基本成员及访问控制1.字段(域):存储要满足其设计所需要的数据。2.属性:提供灵活的机制来读取,设置或计算私有或受保护字段的值。3.方法:方法是对象能够执行的一些操作,它体现了对象的功能。4.构造函数和析构函数:对对象进行初始化和回收资源。5.事件:由类产生的通知,用于说明发生了什么事情。6.索引器:允许编程人员在访问数组时,通过索引器访问类的多个实例。又称下标指示器。7.运算符:定义类的实例能使用的运算符。8.常量:用来定义与类相关的常量值。
当前10页,总共36页。类的成员访问控制:在编写程序时,可以对类的成员使用不同的访问修饰符,从而定义它们的访问级别,即类成员的可访问性(Accessibility)。在C#中,根据类成员的可访问性可以把类成员分成四类,分别是公有成员(public)、私有成员(private)、保护成员(protected)、内部成员(internal)。
当前11页,总共36页。访问修饰符public:表示公共访问,它是允许访问的最高级别。共有成员可以在代码的任何位置对其进行访问。private:表示私有访问,私有成员只能在声明自身的类中的才能进行访问(如果没有使用任何关键字,就默认使用这个关键字)protected:表示受保护的访问,受保护的成员只能由其所在的类中访问并且可以由派生类中的代码去访问internal:成员只能由定义它的项目(程序集)内部的代码访问。当前12页,总共36页。成员访问修饰符classStudent { //声明两个字段 stringname=“”; intage=22; //返回姓名的方法 publicstringgetName() { returnname; } } //类实例化Students=newStudent(); Console.WriteLine(s.getName());//访问字段Console.WriteLine();
当前13页,总共36页。类的静态成员和实例成员 类的成员又可以分成静态成员和非静态成员。在声明成员时,如果在语句前加上static保留字,则该成员是静态成员,如果没有static保留字,则成员是非静态成员。二者最重要的区别是:静态成员属于类所有,非静态成员属于类的实例所有,所以又称实例成员。当前14页,总共36页。属性对私有或保护成员常见的访问就是读取或设置数据值,在类定义的外部,这种访问可以通过属性成员实现。定义属性:AccessModifyTypePropertyName { get {//取值代码} set {//赋值代码} }当前15页,总共36页。注意:如果只提供get方法,则该属性为只读;如果只提供set方法,则该属性为只写.只写属性适合于保护密码这样的敏感数据.C#中建议通过属性访问字段.示例:定义一个student类,将字段的访问控制设为private,通过属性控制在类外访问字段的权限.当前16页,总共36页。属性使用classStudent{
privatestringid;
privatestringname;
//id的属性
publicstringID
{get{returnid;//返回读取的值}set{id=value;//value是一个关键字,表示要写入的数据成员的值}
}
}当前17页,总共36页。通过属性设置访问数据成员classProgram{staticvoidMain(string[]args){Students=newStudent();//用属性设置修改数据成员的值(set)s.ID="123456";s.Name="bill";
//用属性设置获取数据成员的值(get)Console.WriteLine("ID={0},Name={1}",s.ID,s.Name);}}当前18页,总共36页。方法方法是一种用于实现可由对象或类执行的计算或操作的成员。方法是类成员的一种,通常称为函数成员。类的方法主要是和类相关联的动作,它是类的外部界面,对于那些私有的字段来说,外部界面实现对它们的操作一般只有通过方法来实现。通过方法的调用,使不同类之间可以相互沟通,完成所要执行的运算或者特定的工作。当前19页,总共36页。方法的定义声明[attributes][method-modifiers]returnTypemember([formal-parameter-list]){block…}参数说明: attributes:表示访问修饰符,通常把所有方法都定义为publicmethod-modifiers:表示修饰符returnType:返回值类型member:表示方法的名称formal-parameter-list:用逗号隔开的类型,标识符(参数)block:表示方法体注意:如果方法没有返回值,其返回的类型必须是void
当前20页,总共36页。无参方法示例代码:publicstaticvoidadd(){ inta,b,c; a=1; b=2; c=a+b; Console.WriteLine(c);} publicstaticintadd(){ inta,b,c; a=1; b=2; c=a+b; returnc;}
当前21页,总共36页。方法的参数调用方法时,可以给该方法传递一个或多个值。实参:传给方法的值叫做实参。形参:在方法内部,接受实参的变量叫做形参。形参在紧跟着方法名的括号中声明。当前22页,总共36页。示例代码:classProgram{staticvoidMain(string[]args){Console.WriteLine(country("中国人"));}//定义一个country静态方法,返回值为stringpublicstaticstringcountry(stringstrCountry){return"我是"+strCountry;}}当前23页,总共36页。方法的参数的类型值参数:声明时不带修饰符的参数是值参数。在方法内对值参数的操作不会改变传给方法时变量的值。因为将值类型传递给方法时,传递的是副本而不是对象。引用参数(ref):如果要传递原值并修改它,使用引用参数。因为在传递一个变量给方法而不仅仅是传递的是它的值。在传递时变量必须被初始化。输出参数(out):用来返回一个结果,与引用参数参数的区别在于它不必初始化。参数数组(params):在方法的参数列表中只允许出现一个参数数组而且在方法同时具有固定参数和参数数组的情况下,参数数组必须放在整个参数列表的最后,并且参数数组只允许是一维数组。当前24页,总共36页。静态方法和非静态方法方法分为静态方法和非静态方法,若一个方法声明中含有static修饰符,则称该方法为静态方法,若没有static修饰符,则称该方法为非静态方法。两者的区别在于static修饰的静态方法属于类所有,可以通过类名访问,而没有static修饰的方法属于类的实例所有,可以通过实例进行访问。当前25页,总共36页。方法的重载方法重载:方法签名由方法名称和一个参数列表(参数的类型和顺序)组成,只要签名不同,就可以在一个类中定义具有相同名称的多个方法,当定义两种或两种以上具有相同名称的方法时,就称为方法重载。调用时,编译器根据参数的设置就可以判断在哪种情况下调用哪种方法。特点:1.调用同一方法名2.但各方法中的参数的数据类型,个数,或顺序不同。当前26页,总共36页。构造函数和析构函数构造函数和析构函数是类中比较特殊的两种成员函数,主要用来对对象进行初始化和回收对象资源。一般来说,对象的生命周期从构造函数开始,以析构函数结束。如果一个类含有构造函数,在实例化该类的对象时就会调用,如果含有析构函数,则会在销毁对象时调用它。析构函数和构造函数的名字相同,但析构函数要在名字前加一个波浪号(~)。当退出含有该对象的成员时,析构函数就会自动释放这个对象所占用的内存空间。当前27页,总共36页。构造函数使用new关键字来创建一个对象时,公共语言运行库必须使用那个类的定义来构造对象。并且必须从操作系统中申请一个内存区域,在其中填充类定义字段,然后调用构造函数来执行任何必要的初始化。一个类可以具有多个构造函数,如果用户没有为类定义构造函数,编译器就会自动生成一个默认的构造函数,当然这个默认的构造函数不会执行任何操作。当前28页,总共36页。声明构造函数构造函数主要用来初始化类的实例,声明构造函数是一个特殊的方法,与一般的方法相比,构造函数的名字必须和类的名字相同,可以具有0个或多个参数并且没有返回值(包括void类型)。示例:
classTaxi { publicTaxi() { //初始化对象的数据成员 } }注意:不带参数的构造函数称为“默认构造函数”,无论何时,只要使用new运算符实例化对象,并且不为new提供任何参数,就会调用默认构造函数当前29页,总共36页。构造函数重载构造函数和方法一样可以重载,重载构造函数为创建对象提供了更大的灵活性,以满足创建对象时的不同需要。示例:
classTaxi { publicTaxi() { //初始化对象的数据成员 }
publicTaxi(stringcolor,stringweight) { //初始化对象的数据成员
} }当前30页,总共36页。析构函数析构函数用于类的实例,析构是指回收对象中无用的资源。C#中一个类只能有一个析构函数,并且无法调用析构函数,这些析构函数都是自动调用的。由于.NETFramework实行了一种垃圾回收机制,.NETFramework决定何时回收对象中的资源。析构函数的名称是在类型前加”~”字符,并且没有参数。当前31页,总共36页。示例:ClassMyClass{ ~MyClass() {代码}}通常析构函数的代码是不用编写的,因为.NETFramework会替开发人员完成大部分工作。注意:当应用程序封装窗口,文件和网络连接这类非托管资源时,应当使用析构函数回收资源。当前32页,总共36页。const常量与readonly关键字const关键字用于修改字段或局部变量的声明,它指定字段或局部变量的值是常数,不能被修改。
注意:readonly关键字与const关键字不同。const字段只能在该字段的声明中初始化。readonly字段可以在声明或构造函数中初始化。因此,根据所使用的构造
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预防传染病手抄报
- 院感预防措施
- 2023年河南单招职测真题(带答案)
- 01.高职单招数学专项练习之集合的基本运算
- 智慧解决方案:智能移动支付
- 项目安全生产情况汇报
- 周口职业技术学院《分子生物学A》2023-2024学年第二学期期末试卷
- 广西中远职业学院《临床医学概要Ⅱ》2023-2024学年第二学期期末试卷
- 泉州华光职业学院《建筑手绘效果》2023-2024学年第二学期期末试卷
- 九州职业技术学院《银行信贷管理学》2023-2024学年第二学期期末试卷
- GB 19377-2003天然草地退化、沙化、盐渍化的分级指标
- 2023精麻药品培训知识试题库及答案(通用版)
- 居民死亡医学证明书英文翻译模板
- 劳 务 中 标 通 知 书
- 建房界址四邻无争议确认表
- 化工安全工程:第四章 泄漏源及扩散模式
- 流变性以及其调整
- 完整版安全生产培训内容
- 医院关于待岗、停岗的规定
- [四川]”寻仙踪、走诗路“诗歌度假小镇规划概念方案
- 10大气复合污染条件下新粒子生成与二次气溶胶增长机制
评论
0/150
提交评论