




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一节:概述第一节:概述第二节:第二节:C# 语言的基本原理语言的基本原理第三节:第三节:C# 中对象的创建中对象的创建第四节:面向对象的编程技术第四节:面向对象的编程技术第五节:第五节: C# 程序编程程序编程第六节第六节: 创建创建 Windows应用程序应用程序第七节:第七节:应用程序设置和部署应用程序设置和部署第七章第七章 C Sharp 编程编程 课程内容课程内容3C#中对象的创建中对象的创建内容:内容: 类的定义类的定义 声明方法声明方法 构造函数构造函数 使用类的静态成员使用类的静态成员命名空间命名空间 学习完本节后,你将能够:学习完本节后,你将能够:定义类定义类创建对象创建对象
2、 使用访问修饰符定义类成员的作用域使用访问修饰符定义类成员的作用域使用命名空间来组织类使用命名空间来组织类类类 的的 定义定义 3.1万物皆对象万物皆对象世间万物皆为对象,狗、建筑、汽车世间万物皆为对象,狗、建筑、汽车对象都具有状态和行为对象都具有状态和行为对象都有类型对象都有类型任何对象都是某个类的实例,是属于某个类的对象任何对象都是某个类的实例,是属于某个类的对象每个对象都利用别的对象来组建自己。每个对象都利用别的对象来组建自己。 汽车汽车 = = 发动机发动机 + + 轮胎轮胎 + + 方向盘方向盘 + + 刹车刹车 + + 一只蛤蟆一张嘴,两只眼睛四条腿一只蛤蟆一张嘴,两只眼睛四条腿
3、换言之,你通过将已有的对象打成一个包,来创建新的对换言之,你通过将已有的对象打成一个包,来创建新的对象。由此,你可以将程序的复杂性,隐藏在对象的简单性象。由此,你可以将程序的复杂性,隐藏在对象的简单性之下之下类类 和和 对对 象象 3.1.1类类 和和 对对 象象 3.1.1类是对象的模板,它定义了对象的公共属性和行类是对象的模板,它定义了对象的公共属性和行为(方法)。属性和方法共同称作类的成员为(方法)。属性和方法共同称作类的成员对象是类的实例,是具体的对象是类的实例,是具体的对象必须使用对象必须使用 new new 进行实例化才可以使用进行实例化才可以使用类类 和和 对对 象象 3.1.1
4、 类 对象球员(模板) 卡卡(具体化)姓名 姓名 = 卡卡国籍国籍 = 巴西擅长脚 擅长 = 右传球( ) 传“直传球”射门( ) 射门“远射”属性属性方法方法类类 和和 对对 象象 3.1.1类:类:相对对象而言,类似于相对对象而言,类似于模板或蓝图模板或蓝图包含方法和数据包含方法和数据对象:对象:w 是类的实例是类的实例w 使用关键字使用关键字 new 创建创建w 对象具有状态和行为对象具有状态和行为定义类和创建对象定义类和创建对象 3.1.3类是对象的模板,使用对象前必须先创建类类是对象的模板,使用对象前必须先创建类语法:语法:访问修饰符 class 类名 字段; /描述对象的状态 方法
5、; /实现对象的行为 构造函数; /初始化对象定义类的字段定义类的字段 3.1.3字段是用来描述一个类的对象的状态和特征的,字段是用来描述一个类的对象的状态和特征的,如人的名字、性别、年龄等如人的名字、性别、年龄等语法:语法:示例:示例:访问修饰符 数据类型 字段名 = 缺省值class People public string name; /姓名字段 public string sex; /性别字段 定义类的方法定义类的方法 3.1.3方法是一组指令集合,用来实现一个类的对象方法是一组指令集合,用来实现一个类的对象的行为,如人会的行为,如人会“使用工具使用工具”,狮子会,狮子会“咬人咬人”语
6、法:语法: 访问修饰符 返回值类型 方法名 (参数) 指令集合; /方法体 注意:有关方法的详细介绍,将在下小一节给出定义类的构造函数定义类的构造函数 3.1.3构造函数是一个特殊的方法,用来在创建对象构造函数是一个特殊的方法,用来在创建对象时完成对象的初始化工作时完成对象的初始化工作语法:语法: 访问修饰符 类名 (参数) 指令集合; /方法体 注意:有关构造函数的详细介绍,将在下小一节给出定义类和创建对象定义类和创建对象 3.1.3示例:示例: 一个简单的类,只包含了几个字段一个简单的类,只包含了几个字段class People public string name; public str
7、ing sex;创创 建建 对对 象象 3.1.3对象是类的实例,是具体的。要使用对象,必对象是类的实例,是具体的。要使用对象,必须使用关键字须使用关键字new 实例化类的一个对象实例化类的一个对象语法:语法:示例:示例: = new People object1 = new People();使使 用用 对对 象象 3.1.3实例化一个对象之后,就可以访问和使用对象实例化一个对象之后,就可以访问和使用对象的字段和方法了(成员)。的字段和方法了(成员)。使用点取符使用点取符.来访问成员来访问成员示例:示例:People object1 = new People(); =
8、 “小明”;object1.sex = “男”;3C#中对象的创建中对象的创建内容:内容: 类的定义类的定义 声明方法声明方法 构造函数构造函数 使用类的静态成员使用类的静态成员 命名空间命名空间声声 明明 方方 法法 3.2学习完本章后,你将能够:学习完本章后,你将能够:编写方法编写方法给方法传递参数给方法传递参数重载方法重载方法如何编写方法如何编写方法 3.2.1语法:语法: 访问修饰符 返回值类型 方法名 (参数) 指令集合; /方法体 如何编写方法如何编写方法 3.2.1返回值是指当方法执行结束时,方法返回结果的返回值是指当方法执行结束时,方法返回结果的数据类型。例如:对数据类型。例如
9、:对2个整数进行求和的方法,其个整数进行求和的方法,其返回值类型就是整形返回值类型就是整形如果方法没有返回值,使用如果方法没有返回值,使用void关键字关键字参数是可选的,表示传递给方法中要处理的数据,参数是可选的,表示传递给方法中要处理的数据,例如:对例如:对2个整数进行求和的方法,就需要个整数进行求和的方法,就需要2个整个整形的参数形的参数参数的声明方法和变量一样,如果有多个参数,参数的声明方法和变量一样,如果有多个参数,参数之间用,分开参数之间用,分开如何编写方法如何编写方法 3.2.1示例:示例: 给类增加方法给类增加方法class People public string name;
10、 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();obj
11、 = “小美”;object2.sex = “女”;/小明投一颗飞弹给小美object1.useTool(“飞弹”, object2);/小美还小明一枚臭弹object2.useTool(“臭弹”, object1);给方法传递参数给方法传递参数 3.2.2当调用方法时,传递参数的个数、数据类型、顺当调用方法时,传递参数的个数、数据类型、顺序必须与方法签名一致序必须与方法签名一致方法名方法名+方法的参数列表合称为方法签名方法的参数列表合称为方法签名class SimpleMath public int Add(int x, int y) return x+y; /调用方法时需
12、要传递参数SimpleMath sums = new SimpleMath();int total = sums.Add(20,30);方法重载方法重载 3.2.5在同一个类中可以定义多个方法,它们享有相同的名字,在同一个类中可以定义多个方法,它们享有相同的名字,但是方法的参数不同,或者参数类型不同,或者参数个数但是方法的参数不同,或者参数类型不同,或者参数个数不同,这就叫方法重载不同,这就叫方法重载只有返回值类型不同,不是方法重载,会产生编译时错误只有返回值类型不同,不是方法重载,会产生编译时错误方法被调用时,系统会根据你提供的参数类型或参数个数,方法被调用时,系统会根据你提供的参数类型或参
13、数个数,帮你从多个方法中选择正确的那个帮你从多个方法中选择正确的那个构造方法也可以重载构造方法也可以重载 思考题:为什么使用方法重载?思考题:为什么使用方法重载?你负责编写一段打印程序,要打印的数据包括整型、浮点你负责编写一段打印程序,要打印的数据包括整型、浮点型、字符串类型、日期类型等等,且不同数据类型打印方型、字符串类型、日期类型等等,且不同数据类型打印方法也不相同,怎么办?法也不相同,怎么办?解决办法:解决办法:只好为每一种数据类型编写一个单独的打印方法了只好为每一种数据类型编写一个单独的打印方法了w printInt()w printFloat()w printString()w pr
14、intDate()方法重载方法重载 3.2.5 思考题:为什么使用方法重载呢?思考题:为什么使用方法重载呢?更好的解决办法:更好的解决办法:使用一个公共的方法名使用一个公共的方法名print( ),然后通过方法重载实现不,然后通过方法重载实现不同数据类型的打印同数据类型的打印w print ( int i )w print ( float f )w print ( String s )w print ( Date d )所有功能相似的方法共享同一个名字,更容易记忆所有功能相似的方法共享同一个名字,更容易记忆方法重载方法重载 3.2.5示例:示例: 重新编写重新编写useTool方法,如果指定了
15、被加害人,则将道具应用于这方法,如果指定了被加害人,则将道具应用于这 一个人;否则将道具应用于所有人一个人;否则将道具应用于所有人方法重载方法重载 3.2.5class People/将道具应用于指定的人 public void useTool(string tool, People o) Console.WriteLine(“将0用于1”,tool, ); /将道具应用于所有人 public void useTool(string tool) Console.WriteLine(“将0用于所有人”,tool); 当输入三个当输入三个/ 后,后,VS.NET 就会插入几行就会插入几
16、行 XML 代码,可代码,可以为成员添加描述信息以为成员添加描述信息在代码编辑器在代码编辑器 中,当在对象名后面输入中,当在对象名后面输入“.” 操作符后,操作符后,VS .NET 会显示对象的成员列表会显示对象的成员列表使用使用 XML代码注释功能代码注释功能 3.2.63C#中对象的创建中对象的创建内容:内容: 类的定义类的定义 声明方法声明方法 构造函数构造函数 使用类的静态成员使用类的静态成员 命名空间命名空间 构造函数构造函数 3.3构造函数是一个很特殊的方法(因为没有返回值)。每构造函数是一个很特殊的方法(因为没有返回值)。每个类都显示或隐式的包涵一个构造方法,用来初始化该个类都显
17、示或隐式的包涵一个构造方法,用来初始化该类的一个新的对象类的一个新的对象构造函数和类具有相同的名称,且没有返回值。构造函数和类具有相同的名称,且没有返回值。构造函数负责:构造函数负责:w 为对象分配内存空间为对象分配内存空间w 成员变量的初始化成员变量的初始化示例示例: : class People public string name; public string sex;/构造函数 public People() sex = “男”; 如何初始化对象如何初始化对象 3.3.1当使用当使用new创建一个新的对象时,创建一个新的对象时,CLR会自动调用构造函会自动调用构造函数。数。示例:示例:
18、 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() 带参数的构造函数带参数的构造函数
19、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构造函数也可以重载,这样就能够以多种方式创建对象构造函数也可以重载,这样就能够以多种方式创建对象示
20、例:示例: 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( ) /构造函数
21、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 strin
22、g 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的作用:的作用:w 点取成员点取成员w 区分同名变量区分同名变量w 将
23、当前对象(自己)作为函数的参数进行传递将当前对象(自己)作为函数的参数进行传递w 作为方法名表示构造方法作为方法名表示构造方法this 关键字关键字class People public string name; public int age; public People(string name, int age) name = name ; = name; this.age = age;示例:示例: 使用使用this 区分同名变量区分同名变量3C#中对象的创建中对象的创建内容:内容: 类的定义类的定义 声明方法声明方法 构造函数构造函数 使用类的静态成员使用类的静态成员
24、命名空间命名空间 使用类的静态成员使用类的静态成员 3.4类可以具有静态的属性、静态方法类可以具有静态的属性、静态方法使用使用 static 关键字修饰关键字修饰静态成员相当于静态成员相当于“全局全局”的,不依赖于某一个具的,不依赖于某一个具体的对象体的对象类的静态字段类的静态字段 3.4.1static 修饰类的字段时,在一个类中只开辟一块内修饰类的字段时,在一个类中只开辟一块内存空间存储,并在类的所有对象实例间共享,因存空间存储,并在类的所有对象实例间共享,因此此static 变量也称为类变量变量也称为类变量class Cat string name ; static string foo
25、d; 类的静态字段类的静态字段 3.4.1static变量不依赖于具体对象,因此直接通过类名访问,变量不依赖于具体对象,因此直接通过类名访问,而不是通过类的对象实例访问的而不是通过类的对象实例访问的非静态变量必须首先实例化类的一个对象,再通过对象访非静态变量必须首先实例化类的一个对象,再通过对象访问,因此也称为实例变量问,因此也称为实例变量class Cat string name ; static string food; static void Main() Cat.food = “fish”; /OK C = “Kitty”; /错误 Cat cat1 = new Cat(
26、); = “Kitty”; /OK类的静态字段类的静态字段 3.4.1static变量类似于变量类似于C语言的全局变量语言的全局变量由于在所有的对象间共享,因此可以用于对象之间的通信由于在所有的对象间共享,因此可以用于对象之间的通信 思考题:思考题:怎样统计被创建的怎样统计被创建的Cat对象的总数?对象的总数?class Cat public static int count; public string name ; public Cat() count+; 类的静态方法类的静态方法 3.4.1static修饰的方法称为静态方法,是一个类的全局方法修饰的方法称为静态方法,
27、是一个类的全局方法静态方法也叫作类方法,类名静态方法也叫作类方法,类名.方法名方法名 没有没有static修饰的方法叫实例方法,对象名修饰的方法叫实例方法,对象名.方法名方法名注意事项:注意事项:w static方法中不能直接使用非静态成员,因为非静态成员与实例方法中不能直接使用非静态成员,因为非静态成员与实例相关,但可以通过对象点取间接使用相关,但可以通过对象点取间接使用w static方法中不能使用方法中不能使用this(与实例相关)(与实例相关)w 非非static方法中可以使用静态成员方法中可以使用静态成员3C#中对象的创建中对象的创建内容:内容: 类的定义类的定义 声明方法声明方法
28、构造函数构造函数 使用类的静态成员使用类的静态成员 命名空间命名空间 使用命名空间组织类使用命名空间组织类 3.1.4.NET框架类库提供了几百个类供程序员使用,程框架类库提供了几百个类供程序员使用,程序员也可以创建自己的类序员也可以创建自己的类如此众多的类该如何管理呢?就如同硬盘上的文如此众多的类该如何管理呢?就如同硬盘上的文件需要文件夹来组织,也可以将功能相似或相关件需要文件夹来组织,也可以将功能相似或相关的类组织到一起,这就是命名空间的类组织到一起,这就是命名空间NameSpace如果有多个类重名(不同的程序员开发),可以如果有多个类重名(不同的程序员开发),可以将类组织到不同的命名空间,以避免命名冲突将类组织到不同的命名空间,以避免命名冲突使用命名空间组织类使用命名空间组织类 3.1.4如同硬盘上的文件夹可以包含子文件夹一样,一如同硬盘上的文件夹可以包含子文件夹一样,一个命名空间可以再包
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 土地流转与农田规模化经营策略
- 特殊教育评估与个性化教学策略
- 2025年无机化工用催化剂合作协议书
- 关于高一家长会发言稿(10篇范文参考)
- 法规咨询与注册服务行业跨境出海战略研究报告
- 神话故事动画片制作企业制定与实施新质生产力战略研究报告
- 水体自净能力提升方案行业跨境出海战略研究报告
- 网络(手机)动漫经纪代理在线平台行业深度调研及发展战略咨询报告
- 液体药品无菌灌装设备定制化行业深度调研及发展战略咨询报告
- 温室气体排放控制技企业制定与实施新质生产力战略研究报告
- 与发包人、监理及设计人的配合
- 2022-2023学年北京市怀柔区八年级下学期期末语文试题及答案
- 卫生检验习题库含参考答案
- 腹腔压力监测演示文稿
- 带电作业屏蔽服安全技术标准
- 《匆匆》朱自清ppt课件-小学语文六年级
- 高中生读后续写现状调查报告1 论文
- 汽油机振动棒安全操作规程
- 认证咨询机构设立审批须知
- 项目式学习 知甜味百剂 享“甜蜜”人生 阿斯巴甜合成路线的设计 上课课件
- GB/T 7971-2007半导电电缆纸
评论
0/150
提交评论