




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一节:概述 第二节:C# 语言的基本原理 第三节:C# 中对象的创建 第四节:面向对象的编程技术 第五节: C# 程序编程 第六节: 创建 Windows应用程序 第七节:应用程序设置和部署,第七章 C Sharp 编程 课程内容,C#中对象的创建,内容:,类的定义 声明方法 构造函数 使用类的静态成员 命名空间,C#,学习完本节后,你将能够: 定义类 创建对象 使用访问修饰符定义类成员的作用域 使用命名空间来组织类,类 的 定义 3.1,万物皆对象 世间万物皆为对象,狗、建筑、汽车对象都具有状态和行为 对象都有类型 任何对象都是某个类的实例,是属于某个类的对象 每个对象都利用别的对象来组建自己。 汽车 = 发动机 + 轮胎 + 方向盘 + 刹车 + 一只蛤蟆一张嘴,两只眼睛四条腿 换言之,你通过将已有的对象打成一个包,来创建新的对象。由此,你可以将程序的复杂性,隐藏在对象的简单性之下,类 和 对 象 3.1.1,类 和 对 象 3.1.1,类是对象的模板,它定义了对象的公共属性和行为(方法)。属性和方法共同称作类的成员 对象是类的实例,是具体的 对象必须使用 new 进行实例化才可以使用,类 和 对 象 3.1.1,类 对象 球员(模板) 卡卡(具体化) 姓名 姓名 = 卡卡 国籍 国籍 = 巴西 擅长脚 擅长 = 右 传球( ) 传“直传球” 射门( ) 射门“远射”,属性,方法,类 和 对 象 3.1.1,类: 相对对象而言,类似于模板或蓝图 包含方法和数据,对象: 是类的实例 使用关键字 new 创建 对象具有状态和行为,对象,类,定义类和创建对象 3.1.3,类是对象的模板,使用对象前必须先创建类 语法:,访问修饰符 class 类名 字段; /描述对象的状态 方法; /实现对象的行为 构造函数; /初始化对象 ,定义类的字段 3.1.3,字段是用来描述一个类的对象的状态和特征的,如人的名字、性别、年龄等 语法: 示例:,访问修饰符 数据类型 字段名 = 缺省值,class People public string name; /姓名字段 public string sex; /性别字段 ,定义类的方法 3.1.3,方法是一组指令集合,用来实现一个类的对象的行为,如人会“使用工具”,狮子会“咬人” 语法:,访问修饰符 返回值类型 方法名 (参数) 指令集合; /方法体 注意:有关方法的详细介绍,将在下小一节给出,定义类的构造函数 3.1.3,构造函数是一个特殊的方法,用来在创建对象时完成对象的初始化工作 语法:,访问修饰符 类名 (参数) 指令集合; /方法体 注意:有关构造函数的详细介绍,将在下小一节给出,定义类和创建对象 3.1.3,示例: 一个简单的类,只包含了几个字段,class People public string name; public string sex; ,创 建 对 象 3.1.3,对象是类的实例,是具体的。要使用对象,必须使用关键字new 实例化类的一个对象 语法: 示例:, = new ,People object1 = new People();,使 用 对 象 3.1.3,实例化一个对象之后,就可以访问和使用对象的字段和方法了(成员)。 使用点取符.来访问成员 示例:,People object1 = new People(); = “小明”; object1.sex = “男”; ,C#中对象的创建,内容:,类的定义 声明方法 构造函数 使用类的静态成员 命名空间,C#,声 明 方 法 3.2,学习完本章后,你将能够: 编写方法 给方法传递参数 重载方法,如何编写方法 3.2.1,语法:,访问修饰符 返回值类型 方法名 (参数) 指令集合; /方法体 ,如何编写方法 3.2.1,返回值是指当方法执行结束时,方法返回结果的数据类型。例如:对2个整数进行求和的方法,其返回值类型就是整形 如果方法没有返回值,使用void关键字 参数是可选的,表示传递给方法中要处理的数据,例如:对2个整数进行求和的方法,就需要2个整形的参数 参数的声明方法和变量一样,如果有多个参数,参数之间用,分开,如何编写方法 3.2.1,示例: 给类增加方法,class People public string name; public string sex; /可以使用道具加害于人,此方法需要2个参数,即道具和被加害人 public void useTool(string tool, People o) Console.WriteLine(“将0用于1”,tool, ); ,如何使用方法,示例: 方法也是类的成员,同样使用点取符.来访问和使用,People object1 = new People(); = “小明”; object1.sex = “男”; People object2 = new People(); = “小美”; object2.sex = “女”; /小明投一颗飞弹给小美 object1.useTool(“飞弹”, object2); /小美还小明一枚臭弹 object2.useTool(“臭弹”, object1);,给方法传递参数 3.2.2,当调用方法时,传递参数的个数、数据类型、顺序必须与方法签名一致 方法名+方法的参数列表合称为方法签名,class SimpleMath public int Add(int x, int y) return x+y; /调用方法时需要传递参数 SimpleMath sums = new SimpleMath(); int total = sums.Add(20,30);,方法重载 3.2.5,在同一个类中可以定义多个方法,它们享有相同的名字,但是方法的参数不同,或者参数类型不同,或者参数个数不同,这就叫方法重载 只有返回值类型不同,不是方法重载,会产生编译时错误 方法被调用时,系统会根据你提供的参数类型或参数个数,帮你从多个方法中选择正确的那个 构造方法也可以重载,思考题:为什么使用方法重载? 你负责编写一段打印程序,要打印的数据包括整型、浮点型、字符串类型、日期类型等等,且不同数据类型打印方法也不相同,怎么办? 解决办法: 只好为每一种数据类型编写一个单独的打印方法了 printInt() printFloat() printString() printDate(),?,方法重载 3.2.5,思考题:为什么使用方法重载呢? 更好的解决办法: 使用一个公共的方法名print( ),然后通过方法重载实现不同数据类型的打印 print ( int i ) print ( float f ) print ( String s ) print ( Date d ) 所有功能相似的方法共享同一个名字,更容易记忆,?,方法重载 3.2.5,示例: 重新编写useTool方法,如果指定了被加害人,则将道具应用于这 一个人;否则将道具应用于所有人,方法重载 3.2.5,class People /将道具应用于指定的人 public void useTool(string tool, People o) Console.WriteLine(“将0用于1”,tool, ); /将道具应用于所有人 public void useTool(string tool) Console.WriteLine(“将0用于所有人”,tool); ,当输入三个/ 后,VS.NET 就会插入几行 XML 代码,可以为成员添加描述信息 在代码编辑器 中,当在对象名后面输入“.” 操作符后,VS .NET 会显示对象的成员列表,使用 XML代码注释功能 3.2.6,C#中对象的创建,内容:,类的定义 声明方法 构造函数 使用类的静态成员 命名空间,C#,构造函数 3.3,构造函数是一个很特殊的方法(因为没有返回值)。每个类都显示或隐式的包涵一个构造方法,用来初始化该类的一个新的对象 构造函数和类具有相同的名称,且没有返回值。 构造函数负责: 为对象分配内存空间 成员变量的初始化 示例:,class People public string name; public string sex; /构造函数 public People() sex = “男”; ,如何初始化对象 3.3.1,当使用new创建一个新的对象时,CLR会自动调用构造函数。 示例:,class People public string name; public string sex; /构造函数 public People() sex = “男”; People obj = new People();,如何初始化对象 3.3.1,如果没有编写构造函数,C#会自动提供一个缺省的无参的构造参数 示例:,class People public string name; 等价于: class People public string name; public People() ,带参数的构造函数 3.3.1,同其他方法一样,构造函数可以带参数 一旦我们定义了构造函数,C#就不再提供缺省构造函数 示例:,class People public string name; /带参数的构造函数 public People(string s) name = s; People obj = new People(“小明”); People obj = new People(); /编译错误!,重载构造函数 3.3.2,构造函数也可以重载,这样就能够以多种方式创建对象 示例:,class People public string name; /无参的构造函数 public People( ) sex = “男”; /带参数的构造函数 public People(string s) name = s; People obj1 = new People(“小明”); People obj2 = new People();,使用初始化列表 3.3.2,思考题: 为什么使用初始化列表,class People public string name; public int age; public People( ) /构造函数0 name = “unknow”; age = 0; public People(string sname) /构造函数1 name = sname; age = 0; public People(string sname,int theAge) /构造函数2 name = sname; age = theAge; ,?,使用初始化列表 3.3.2,多个重载的构造函数常常很相似,大量重复代码 将公共代码集中于一个构造函数中,由构造函数调用 示例:,class People public string name; public int age; public People( ):this(“unknow”,0) /构造函数0 public People(string sname):this(sname,0) /构造函数1 public People(string sname,int theAge) /构造函数2 name = sname; age = theAge; ,this 关键字,this是一个特殊的引用(指针),它指向的是“自己”,也就是当前对象 this的作用: 点取成员 区分同名变量 将当前对象(自己)作为函数的参数进行传递 作为方法名表示构造方法,this 关键字,class People public string name; public int age; public People(string name, int age) name = name ; = name; this.age = age; ,示例: 使用this 区分同名变量,C#中对象的创建,内容:,类的定义 声明方法 构造函数 使用类的静态成员 命名空间,C#,使用类的静态成员 3.4,类可以具有静态的属性、静态方法 使用 static 关键字修饰 静态成员相当于“全局”的,不依赖于某一个具体的对象,类的静态字段 3.4.1,static 修饰类的字段时,在一个类中只开辟一块内存空间存储,并在类的所有对象实例间共享,因此static 变量也称为类变量,class Cat string name ; static string food; ,1 name,2 name,3 name,4 name,food,类的静态字段 3.4.1,static变量不依赖于具体对象,因此直接通过类名访问,而不是通过类的对象实例访问的 非静态变量必须首先实例化类的一个对象,再通过对象访问,因此也称为实例变量,class Cat string name ; static string food; ,static void Main() Cat.food = “fish”; /OK C = “Kitty”; /错误 Cat cat1 = new Cat(); = “Kitty”; /OK ,类的静态字段 3.4.1,static变量类似于C语言的全局变量 由于在所有的对象间共享,因此可以用于对象之间的通信 思考题:怎样统计被创建的Cat对象的总数?,class Cat public static int count; public string name ; public Cat() count+; ,?,1 cat1,2 cat2,3 cat3,4 cat4,count = 4,类的静态方法 3.4.1,static修饰的方法称为静态方法,是一个类的全局方法 静态方法也叫作类方法,类名.方法名 没有static修饰的方法叫实例方法,对象名.方法名 注意事项: static方法中不能直接使用非静态成员,因为非静态成员与实例相关,但可以通过对象点取间接使用 static方法中不能使用this(与实例相关) 非static方法中可以使用静态成员,C#中对象的创建,内容:,类的定义 声明方法 构造函数 使用类的静态成员 命名空间,C#,使用命名空间组织类 3.1.4,.NET框架类库提供了几百个类供程序员使用,程序员也可以创建自己的类 如此众多的类该如何管理呢?就如同硬盘上的文件需要文件夹来组织,也可以将功能相似或相关的类组织到一起,这就是命名空间NameSpace 如果有多个类重名(不同的程序员开发),可以将类组织到不同的命名空间,以避免命名冲突,使用命名空间组织类 3.1.4,如同硬盘上的文件夹可以包含子文件夹一样,一个命名
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 期货从业资格之期货投资分析考前自测高频考点模拟试题附答案详解(综合题)
- 期货从业资格之期货投资分析过关检测带答案详解(典型题)
- 物业抗击情业务方案(3篇)
- 机场巡查防爆措施方案(3篇)
- 墙体脱落问题整改方案(3篇)
- 导游应急安全知识培训课件
- 乡村振兴战略背景下基层农业技术推广工作策略研究
- 2025辅警看护考试试题及答案
- 一滴水经过丽江课件
- 智能诊所药品采购方案(3篇)
- 2024年江苏省南京市中考数学试卷真题(含答案逐题解析)
- 2025年区块链应用操作员职业技能竞赛理论参考试指导题库500题(含答案)
- 2025年中国移动初级解决方案经理学习考试题库大全-上(单选题)
- DB35T 1951-2020福建省公共机构能耗定额标准
- 医疗机构从业人员规范
- 《研学旅行相关概念与理论基础综述》1900字
- 医院培训课件:《股骨头坏死》
- 保险基础知识简读本(2024版)
- 集团公司司库管理办法
- 住院患儿实施院内转运临床实践指南2023版课件
- 主播新手上路-打造游戏直播与娱乐新风向
评论
0/150
提交评论