书签 分享 收藏 举报 版权申诉 / 138
上传文档赚钱

类型C#面向对象课件.pptx

  • 上传人(卖家):晟晟文业
  • 文档编号:4766856
  • 上传时间:2023-01-08
  • 格式:PPTX
  • 页数:138
  • 大小:6.53MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《C#面向对象课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    C# 面向 对象 课件
    资源描述:

    1、面向对象面向对象1Microsoft.NET介绍介绍微软的微软的.NET历史历史2000年微软公司向全球宣布其革命性的软件和服务平年微软公司向全球宣布其革命性的软件和服务平台:台:Microsoft.NET 2001年发布了年发布了.NET Framework1.0版版经历经历5个版本个版本1.0、1.1、2.0、3.0、3.5Microsoft.NET介绍介绍支持多种终端平台支持多种终端平台信息互联互通信息互联互通Web服务:服务:Passport,MSN在线游戏在线游戏Live服务服务任何时候、任何地方、利用任何工具都可以获得网络上的信息,任何时候、任何地方、利用任何工具都可以获得网络上的

    2、信息,并享受网络通信所带来的快乐并享受网络通信所带来的快乐 .NET战略对微软的影响战略对微软的影响2003200420032004年间,年间,全球全球100100强强和财富和财富100100强加起来的共强加起来的共166166个公司个公司微软发布微软发布.NET前后的营业额前后的营业额Microsoft.NET介绍介绍为什么需要为什么需要.NET框架框架不同平台(不同平台(PDA、PC、游戏机)的程序如何在、游戏机)的程序如何在.NET环境环境下运行?下运行?使用使用C#的程序可以调用的程序可以调用VB.NET开发的程序吗?开发的程序吗?.NET 框架概述框架概述.NET框架框架.NET战略

    3、的基础框架战略的基础框架便捷的开发平台便捷的开发平台强大的类库强大的类库.NET程序的运行环境程序的运行环境.NET框架框架 公共语言运行时公共语言运行时 框架类库框架类库 两个主要组件两个主要组件.NET框架的魅力框架的魅力面向对象编程面向对象编程提高软件可复用、可扩展、易维护性、灵活性提高软件可复用、可扩展、易维护性、灵活性强大的动态强大的动态Web支持支持Web服务服务Passport服务服务MSN,Hotmail都通过都通过Passport Web服务验证服务验证世界级开发工具世界级开发工具Visual Studio 2005框架体系结构框架体系结构.NET框架的核心框架的核心操作系统

    4、公共语言运行库(CLR).NET Framework 类库(FCL)框架组件框架组件基本框架类基本框架类.NET Framework.NET Framework 类库类库ASP.NETCLSCLRCTS无论是无论是WinForms和和ASP.NET都都可以使用可以使用ADO.NET与基类库与基类库公共语言运行时公共语言运行时CLR 称为公共语言运行时称为公共语言运行时C#VB.NET 代码被执行代码被执行 MSIL CLR通用语法,计通用语法,计算机不用了解算机不用了解CLR执行执行IL C#编译器编译器VB.NET编译器编译器公共语言运行时公共语言运行时CTS和和CLS是是CLR的子集的子集

    5、CTS(通用类型系统)定义了在(通用类型系统)定义了在IL中的的数据类型中的的数据类型VB.NET的的Integer和和C#的的int型都被编译成型都被编译成Int32CLS(公共语言规范)(公共语言规范)CLR支持的语言功能的子集,包支持的语言功能的子集,包括几种面向对象的编程语言的通用功能括几种面向对象的编程语言的通用功能 框架类库框架类库提供对系统功能的访问提供对系统功能的访问建立建立.NET应用程序,组件和控件的基础应用程序,组件和控件的基础庞大的类库数量庞大的类库数量170多个命名空间,上千个类多个命名空间,上千个类功能齐全,方便使用功能齐全,方便使用对文件的基本操作对文件的基本操作

    6、对网络的访问对网络的访问安全控制安全控制对图形的操作对图形的操作.NET平台全新的语言平台全新的语言配合革命性平台,诞生了配合革命性平台,诞生了C#C#之父之父 Anders Hejlsberg曾工作于曾工作于 Borland 公司公司Pascal 和和 Delphi 之父之父1996年赴微软,当时年薪年赴微软,当时年薪 300W$.NET平台全新的语言平台全新的语言C#是一种简单、现代、面向对象编程语言是一种简单、现代、面向对象编程语言目前经历了三个版本目前经历了三个版本1.0、2.0、3.0我们学习的是我们学习的是2.0、3.0Anders自定义命名空间自定义命名空间如果在一个项目中,编写

    7、了两个功能不同但名字相同的类,如果在一个项目中,编写了两个功能不同但名字相同的类,就会发生冲突,如何解决冲突?就会发生冲突,如何解决冲突?重新命名类名重新命名类名 namespace MySchool public class Student namespace YourSchool public class Student 不同的命名空间不同的命名空间 使用命名空间使用命名空间 嵌套命名空间嵌套命名空间回顾:命名空间用于组织相关类和其他类型回顾:命名空间用于组织相关类和其他类型 与与Java的的package相似相似嵌套命名空间嵌套命名空间namespace City namespace M

    8、ySchool namespace Class class Student /此处编写代码此处编写代码 引用命名空间:引用命名空间:using City.MySchool.Class;使用别名使用别名如果命名空间的名字非常的长如果命名空间的名字非常的长给这个嵌套的命名空间指定一个简洁的名字给这个嵌套的命名空间指定一个简洁的名字 City.MySchool.Classusing user=City.MySchool.Class;/namespace MySchool class Student user.Student stu=new user.Student();别名别名 使用别名使用别名 对

    9、象对象对象是人们要进行研究的任何事物对象是人们要进行研究的任何事物 颜色:灰色颜色:灰色排量:排量:3.0 3.0 刹车刹车产地:德国产地:德国行驶行驶名字:保时捷名字:保时捷行为行为状态状态颜色:红色颜色:红色排量:排量:4.04.0刹车刹车产地:意大利产地:意大利行驶行驶名字:法拉利名字:法拉利行为行为状态状态 回顾回顾Java的对象,描述汽车的特征和行为的对象,描述汽车的特征和行为 有各自不同有各自不同的状态的状态类和对象类和对象小汽车小汽车颜色:灰色颜色:灰色排量:排量:3.0 刹车刹车产地:德国产地:德国行驶行驶名字:保时捷名字:保时捷行为行为状态状态类的实例化,是类的实例化,是由类

    10、具体化对象由类具体化对象类类产地产地 车体颜色车体颜色 行驶行驶 刹车刹车 归纳一组相似对归纳一组相似对象的共性象的共性对象对象属性属性方法方法类描述一组相似对象的共性类描述一组相似对象的共性类和对象的应用类和对象的应用类和对象的简单应用类和对象的简单应用/Car ferrari =New Car();ferrari.Run();/类类对象对象实例化对象实例化对象 调用方法调用方法 public class Student int age=26;/姓名姓名 private string name;public string Name get return name;set name=value

    11、;/问候问候 public void SayHi()类和类的成员类和类的成员类的成员类的成员字段字段 属性属性 方法方法 类名类名 自定义一个类自定义一个类class DBHelper /数据库连接字符串数据库连接字符串 private static string connString=;/数据库连接数据库连接 Connection 对象对象 public static SqlConnection connection=new SqlConnection(connString);访问修饰符访问修饰符私有私有 公有公有 公有成员和私有成员公有成员和私有成员class student privat

    12、e string name;/姓名姓名 public int age;/年龄年龄 public string idNumber;/身份证号身份证号static void Main(string args)student myStudent=new student();myStudent.name=张三张三;myStudent.age=20;私有成员私有成员 公有成员公有成员 实例化一个对象实例化一个对象 可以访问可以访问 无法访问编译错误无法访问编译错误 数据安全数据安全static void Main(string args)student myStudent=new student();m

    13、yStudent.age=-2;myStudent.idNumber=123456;非法数据非法数据 身份证号不能被修改身份证号不能被修改 无法获得数据无法获得数据 无法正常赋值无法正常赋值 有时候将类中有时候将类中的字段公开是的字段公开是不安全的不安全的如果设为私有成员如果设为私有成员能否对这些字段进行规则约束或者只读呢?能否对这些字段进行规则约束或者只读呢?在类中使用属性在类中使用属性private int age;/年龄年龄public int Age get return age;set if(value 0&value 0&value 50&score 60)Console.Writ

    14、eLine(你的成绩在你的成绩在50-60之间,可以加分。之间,可以加分。);score=60;scoreResult=score;都可以输出结果都可以输出结果 ref侧重修改,侧重修改,out侧重输出侧重输出 不能写成不能写成AddScore(out int scoreResult)方法的使用方法的使用实现两个整型的加法实现两个整型的加法class Add public int Sum(int para1,int para2)return para1+para2;Add myAdd=new Add();int sum=myAdd.Sum(2,3);使用方法使用方法实例化一个对象实例化一个对象

    15、 返回结果返回结果 调用方法调用方法 静态方法静态方法class mySwap public static void S int num1,ref int num2)int temp;temp=num1;num1=num2;num2=temp;class Program static void Main(string args)int num1=5,num2=10;myS(ref num1,ref num2);回顾一下,回顾一下,Swap方法在另一类中如何调用?方法在另一类中如何调用?静态方法使用类名调用静态方法使用类名调用静态方法静态方法 静态方法和实例方法静态方法和实例方法使用使用stat

    16、ic修饰的方法称为静态方法修饰的方法称为静态方法使用实例对象调用的方法叫做实例方法使用实例对象调用的方法叫做实例方法静态方法静态方法实例方法实例方法static 关键字关键字不需要不需要static关键字关键字使用类名调用使用类名调用使用实例对象调用使用实例对象调用可以访问静态成员可以访问静态成员可以直接访问静态成员可以直接访问静态成员不可以直接访问实例成员不可以直接访问实例成员可以直接访问实例成员可以直接访问实例成员不能直接调用实例方法不能直接调用实例方法可以直接访问实例方法、静态方法可以直接访问实例方法、静态方法调用前初始化调用前初始化实例化对象时初始化实例化对象时初始化为什么要重载为什么

    17、要重载 public int Sum(int para1,int para2)return para1+para2;整型参数,整型参数,返回值整型返回值整型如果想让两个如果想让两个string型、两个型、两个double型相加,怎么做?型相加,怎么做?编写两个不同名字的方法,这样我们在进行调用时编写两个不同名字的方法,这样我们在进行调用时要先判断是什么类型,能否不判断直接就能相加呢?要先判断是什么类型,能否不判断直接就能相加呢?方法的重载方法的重载同一个类中添加几个名字相同,参数与返回值不同的方法同一个类中添加几个名字相同,参数与返回值不同的方法 public string Sum(strin

    18、g para1,string para2)return para1+para2;public double Sum(double para1,double para2)return para1+para2;调用时只要传递参数即可,无需判断类型调用时只要传递参数即可,无需判断类型 class Add public string Sum(string para1,string para2)public int Sum(int para1,int para2)重载的方式重载的方式基于不同类型参数的重载基于不同类型参数的重载 class Add public int Sum(int para1,int

    19、 para2)public int Sum(int para1,int para2,int para3)相同类型不同参数个数的重载相同类型不同参数个数的重载 不允许重载方法仅仅是返回值不同不允许重载方法仅仅是返回值不同 Student zhang=new Student();zhang.Name=张靓靓张靓靓;zhang.Age=20;zhang.Hobby=唱歌歌唱歌歌;一种特别的方法一种特别的方法班级来了新学员班级来了新学员添加学员对象添加学员对象学员类实例化对象、学员类实例化对象、设置属性设置属性初始属性若太多,初始属性若太多,设置麻烦设置麻烦能否在实例化时设置能否在实例化时设置属性?属

    20、性?public Student(string name,int age,string hobby)this.Name=name;this.Age=age;this.Hobby=hobby;Student zhang=new Student(张靓靓张靓靓,20,唱歌歌唱歌歌);一次设置完成一次设置完成类中加入这类中加入这个方法个方法添加的方法叫做添加的方法叫做构造函数构造函数构造函数构造函数是类中的一种特殊的方法是类中的一种特殊的方法构造函数名与类名相同,不返回任何值构造函数名与类名相同,不返回任何值可初始化成员变量可初始化成员变量class Student public Student(st

    21、ring name,int age,string hobby)this.Name=name;this.Age=age;this.Hobby=hobby;初始化成员变量初始化成员变量 this 关键字引用类的当前实例关键字引用类的当前实例 将参数的值,分别赋将参数的值,分别赋给当前实例的属性给当前实例的属性使用构造函数使用构造函数new 关键字关键字可以实例化一个新的对象可以实例化一个新的对象指定对某个带参数的构造函数指定对某个带参数的构造函数 Student zhang=new Student(张靓靓张靓靓,20,唱歌歌唱歌歌);每次创建类的实例都会调用此方法每次创建类的实例都会调用此方法实例

    22、化对象调用实例化对象调用构造函数构造函数 使用使用 new 关键字关键字 Student scofield=new Student();Student zhang=new Student(张靓靓张靓靓,20,唱歌歌唱歌歌);实例化一个对象实例化一个对象 实例化一个新对象实例化一个新对象 public Student()public Student(string name,int age,string hobby)this.name=name;this.age=age;this.hobby=hobby;构造函数的重载构造函数的重载构造函数也可以重载构造函数也可以重载Student scofiel

    23、d=new Student();Student zhang=new Student(张靓靓张靓靓,20,唱歌歌唱歌歌);方法名相同,方法名相同,参数不同参数不同private int a;public int Aget return a;set a=value;你喜欢读哪段代码?你喜欢读哪段代码?合格的程序要符合编码规则合格的程序要符合编码规则直观易于理解、有意义的单词直观易于理解、有意义的单词 方便维护方便维护有利于调试有利于调试编码规则的必要性编码规则的必要性如如name,age,student private int name;public int Name get return nam

    24、e;set name=value;无法理解无法理解是什么是什么 为什么使用常量为什么使用常量public class Compute double pi=3.14;/计算圆的周长计算圆的周长 public double Perimeter(double radius)return 2*pi*radius;/计算圆的面积计算圆的面积 public double Area(double radius)return pi*radius*radius;这个类中,会反这个类中,会反复使用复使用pi 如果如果pi在类中被修改了,计算结果错误在类中被修改了,计算结果错误 如何避免如何避免pi在类中被修改在类

    25、中被修改?常量常量常量在使用过程中值不会发生变化常量在使用过程中值不会发生变化常量程序中反复使用常量程序中反复使用const 类型类型 常量名常量名=常量值常量值 程序中不会被改程序中不会被改变变static void Main(string args)const int PI=3.14;PI=3.20;强制赋值会发生错误强制赋值会发生错误常量名通常使常量名通常使用大写用大写 随意赋值的危险随意赋值的危险const string GENDER_M=男男;const string GENDER_F=女女;/性别性别private string gender;public string Gende

    26、r get return gender;set gender=value;用常量给属性赋值:用常量给属性赋值:student.Gender=GENDER_M;也可以这样给属性赋值:也可以这样给属性赋值:student.Gender=School;为为Student类添加性别的属性,用常量赋值类添加性别的属性,用常量赋值有违常理,非法数据有违常理,非法数据什么是枚举什么是枚举用一种新的类型定义用一种新的类型定义enumpublic enum Genders Male,Female/性别性别private Genders gender;public Genders Gender get retur

    27、n gender;set gender=value;这样给属性赋值:这样给属性赋值:student.Gender=Genders.Male;如果这样属性赋值:如果这样属性赋值:student.Gender=School;类型不同不能赋值类型不同不能赋值性别属性的类型性别属性的类型Genders是一个是一个枚举类型枚举类型 代码错误代码错误枚举定义枚举定义枚举是一组描述性的名称枚举是一组描述性的名称枚举定义一组有限的值,不能包含方法枚举定义一组有限的值,不能包含方法对可能的值进行约束对可能的值进行约束枚举允许描述性名称表示整数值枚举允许描述性名称表示整数值访问修饰符访问修饰符 enum 枚举名枚

    28、举名 值值1,值,值2 public enum School T1,T2,T3public enum School T1=1,T2=2,T3=3/Console.WriteLine(“T2的整数值是的整数值是0.,(int)(School.T2);取得枚举表示的取得枚举表示的整数值整数值枚举与其它类型的转换枚举与其它类型的转换枚举转换为字符串枚举转换为字符串字符串转换为枚举字符串转换为枚举public enum School T1,T2,T3/Console.WriteLine(“T2的值是的值是0.,School.T2.ToString();(School)(Enum.Parse(typeo

    29、f(School),“T2);需要转换的需要转换的字符串字符串枚举的特点枚举的特点汽车类有一个成员是车身颜色汽车类有一个成员是车身颜色 static void Main(string args)string color=new string red,black,write;Console.WriteLine(我要选择的颜色是我要选择的颜色是:0,color0);使用时,必须了解数使用时,必须了解数组的构成组的构成枚举可以用描述性的名称表示值,使用时无需了解它的构成枚举可以用描述性的名称表示值,使用时无需了解它的构成private enum color red,write,black stati

    30、c void Main(string args)Console.WriteLine(我要选择的颜色是我要选择的颜色是:0,color.red);枚举枚举枚举的典型应用枚举的典型应用DialogResult choice;choice=MessageBox.Show(确定要退出吗?确定要退出吗?,退出系统退出系统,MessageBoxButtons.OKCancel,MessageBoxIcon.Information);if(choice=DialogResult.OK)Application.Exit();DialogResult是个枚是个枚举,指示对话框的返举,指示对话框的返回值回值 这样

    31、我们就不会判断一些非法的值,导致系统异常这样我们就不会判断一些非法的值,导致系统异常 为什么需要结构为什么需要结构有很多预定义颜色有很多预定义颜色正常人眼可分辨的颜色种类可达几十万种以上正常人眼可分辨的颜色种类可达几十万种以上 Color提供使用提供使用RGB值返回颜色的方法值返回颜色的方法FromArgb()System.Drawing.Color有很多颜色值,它是一个枚举吗?有很多颜色值,它是一个枚举吗?System.Drawing.Color是一个是一个结构结构 结构定义结构定义结构中有属性,也可以有方法结构中有属性,也可以有方法public struct StructStudent p

    32、ublic string Name;public int Age;public string Hobby;public int Popularity;public void SayHi()/.访问修饰符访问修饰符 struct 结构名结构名 定义结构成员定义结构成员构成和类相似构成和类相似定义成员变量不能赋初值定义成员变量不能赋初值成员方法成员方法/StructStudent myStu;myStu.Age=20;myStu.Gender=Genders.Female;myStu.Hobby=唱歌歌唱歌歌;myStu.Name=张靓靓张靓靓;myStu.Popularity=100;myStu

    33、.SayHi();/结构的使用结构的使用2-1定义结构可以不用定义结构可以不用new为结构成员赋值为结构成员赋值调用结构的方法调用结构的方法 运行结果和第二运行结果和第二章的章的SayHi相同相同/StructStudent myStu=new StructStudent(张靓靓张靓靓,Genders.Female,20,唱歌歌唱歌歌,100);myStu.SayHi();/结构的使用结构的使用2-2struct StructStudent /public StructStudent(string name,Genders gender,int age,string hobby,int pop

    34、ularity)this.Name=name;this.Gender=gender;/可以有构造函数可以有构造函数 只能声明有参数只能声明有参数的构造函数的构造函数 构造函数传参构造函数传参 理解结构与类的区别理解结构与类的区别都可以实现接口都可以实现接口都可以包含字段、方法都可以包含字段、方法相同点相同点结构中给字段赋值是错误的结构中给字段赋值是错误的 类中可以给字段赋值类中可以给字段赋值 创建对象可以不用创建对象可以不用new创建对象必须使用创建对象必须使用new可以添加构造函数,但它们必须带参数可以添加构造函数,但它们必须带参数可以添加无参的构造函数可以添加无参的构造函数不可以有默认构造

    35、函数不可以有默认构造函数可以有默认构造函数可以有默认构造函数不能被继承不能被继承可以被继承可以被继承值类型值类型引用类型引用类型不同点不同点结构结构类类值类型与引用类型值类型与引用类型使用类版使用类版Student和结构版和结构版Student实现下面操作实现下面操作static void Main(string args)/使用值类型使用值类型 StructStudent student1=new StructStudent();StructStudent student2=new StructStudent();student1.Age=18;student2=student1;stude

    36、nt2.Age=20;Console.WriteLine(student1=0,student2=1,student1.Age,student2.Age);static void Main(string args)/使用引用类型使用引用类型 Student student1=new Student();Student student2=new Student();student1.Age=18;student2=student1;student2.Age=20;Console.WriteLine(student1=0,student2=1,student1.Age,student2.Age);

    37、值类型值类型值类型直接存储值值类型直接存储值student1student1studnet2student1.Age=18student2=student1student1.Age student1studnet2student2.Age=20引用类型引用类型student1student1.Age=18Age=18引用类型存储对值的引用引用类型存储对值的引用student1studnet2student2=student1student1.Age 两个变量都发生两个变量都发生变化变化Age=20student1studnet2student2.Age=20拆箱和装箱拆箱和装箱值类型和引用类型

    38、之间的转换值类型和引用类型之间的转换值类型值类型 引用类型引用类型 装箱装箱拆箱拆箱static void Main(string args)int i=123;object o=i;/装箱装箱 i=456;/改变改变i的内容的内容 Console.WriteLine(值类型的值为值类型的值为 0,i);Console.WriteLine(引用类型的值为引用类型的值为 0,o);static void Main(string args)int i=123;object o=i;/装箱装箱 int j=(int)o;/拆箱拆箱与值类型的变量与值类型的变量类型要一致类型要一致值方式的参数的传递值方

    39、式的参数的传递值传递方式传递值类型:值传递方式传递值类型:结构:结构:StructStudent不会被修改不会被修改/传递值类型参数传递值类型参数StructStudent scofield=new StructStudent(Scofield,Genders.Male,28,越狱狱越狱狱);scofield.SayHi();Vote(scofield);scofield.SayHi();private void Vote(StructStudent stu)stu.Popularity+;人气属性加人气属性加1的方法的方法人气加人气加1两次的人气值相同,参两次的人气值相同,参数未发生变化数未

    40、发生变化值传递值传递值方式的参数的传递值方式的参数的传递值传递引用类型时:值传递引用类型时:类:类:Student参数在程序中被修改参数在程序中被修改/传递引用类型参数传递引用类型参数Student scofield=new Student(Scofield,Genders.Male,28,越狱狱越狱狱);scofield.SayHi();Vote(scofield);scofield.SayHi();引用类型:类引用类型:类人气属性加人气属性加1的方法的方法人气加人气加1引用方式传递引用方式传递传递值类型传递值类型传递引用类型传递引用类型ref方式传递完全修改方式传递完全修改private

    41、void Vote(ref StructStudent stu)stu.Popularity+;ref引用方式传递参数引用方式传递参数值类型和引用类型细分值类型和引用类型细分数组:数组:int,string数组数组接口:接口:interface接口接口自定义类:自定义类:class字符串:字符串:string基类:基类:System.Object类类引用类型引用类型结构:结构:struct结构类型结构类型枚举:枚举:enum枚举类型枚举类型布尔型:布尔型:bool字符型:字符型:char浮点型:浮点型:float长整型:长整型:long整型:整型:int基本数据类型基本数据类型值类型值类型描述

    42、描述类别类别传递数组传递数组数组是值类型还是引用类型数组是值类型还是引用类型/int odd=1,3,5;PrintArray(odd);ChangeToEven(odd);PrintArray(odd);/private void ChangeToEven(int arr)for(int i=0;i arr.Length;i+)arri=i*2;值方式传递值方式传递arr0=1arr1=3arr2=5arr0=0arr1=2arr2=4参数被修改参数被修改数组是引用类型数组是引用类型什么是索引器什么是索引器能否通过姓名访问学员?能否通过姓名访问学员?public Student thisin

    43、t index get return studentsindex;Students类中添加类中添加/采用索引器的方式采用索引器的方式MyClass myClass=new MyClass(T01);myClass.Students2.SayHi();myClass.Students周杰杰周杰杰.SayHi();可以按照索引访问可以按照索引访问重载的索引器根据姓名查找学员重载的索引器根据姓名查找学员索引器的特点索引器的特点DataRow列名列名 DataReader列名列名 数组属性只能根据下标(索引)来访问数组属性只能根据下标(索引)来访问索引器可以被重载索引器可以被重载可以使用更灵活的方式访

    44、问,定义访问方式可以使用更灵活的方式访问,定义访问方式我们以前用过的索引器我们以前用过的索引器类图类图VS2005的类图的类图 类图描述类的结构类图描述类的结构查看一个查看一个类的类图类的类图“锁锁”表示私有表示私有不同字段有不同字段有不同的图标不同的图标通用的类图通用的类图-age:int-name:string+Name:string类名类名Student+SayHi():void“-”表示私表示私有有“+”表示公表示公有有“:”后是变后是变量类型量类型“:”后是返后是返回类型回类型读懂类图是读懂类图是OOP的基本要求的基本要求代码冗余代码冗余对比这两个类:对比这两个类:Student 和

    45、和 Teacher加入校长、班主任的类,都需要加入这几个属性,代码冗余加入校长、班主任的类,都需要加入这几个属性,代码冗余 年龄、性别、年龄、性别、姓名是重复的姓名是重复的如何共用重复代码?如何共用重复代码?提取冗余代码提取冗余代码将公共的成员放将公共的成员放到一个类中到一个类中保留自己特有保留自己特有的成员的成员保留自己特有保留自己特有的成员的成员提取后的应用提取后的应用class Student:Person public Student()/爱好爱好 private string hobby;public string Hobby get return hobby;set hobby=v

    46、alue;1、提取后的、提取后的Student类类只有学员特只有学员特有的属性有的属性2、创建一个学员对象、创建一个学员对象Student zhang=new Student();zhang.Name=张靓靓张靓靓;zhang.Age=20;zhang.Gender=Genders.Female;zhang.Hobby=唱歌歌唱歌歌;公共属性可以访问公共属性可以访问继承继承卡车和巴士都是汽车卡车和巴士都是汽车 生活中的继承生活中的继承汽车汽车 刹车刹车行驶行驶共有行为:共有行为:轮子轮子发动机发动机共有特征:共有特征:卸货卸货拉货拉货各自行为:各自行为:载重载重货舱货舱各自特征:各自特征:停靠

    47、站停靠站报站报站各自行为:各自行为:载客量载客量客舱客舱各自特征:各自特征:他们共有的特征他们共有的特征来自汽车来自汽车有什么共同有什么共同特征呢?特征呢?卡车卡车 公共汽车公共汽车 父类和子类父类和子类在在C#中,一个类可以继承另一个类中,一个类可以继承另一个类Person 子类继承父类,父类派生子类子类继承父类,父类派生子类学员和老师类都继承学员和老师类都继承PersonStudent Teacher 子类子类 父类父类 Student类继承类继承Person类类Person类派生类派生Student类类子类又叫子类又叫派生类派生类父类又叫父类又叫基类基类class Student:Per

    48、son继承概述继承概述继承需要符合的关系:继承需要符合的关系:is-aStudent is a Person子类继承父类的成员子类继承父类的成员子类可以有自己的成员子类可以有自己的成员继承父类的继承父类的成员成员自己特有的自己特有的成员成员继承是面向对象的一个重要特性继承是面向对象的一个重要特性继承在类图中继承在类图中的表示的表示继承的实际应用继承的实际应用1班上所有的人都做自我介绍班上所有的人都做自我介绍SayHi()学员学员 大家好,我是某某同学,今年多少岁,喜欢什么大家好,我是某某同学,今年多少岁,喜欢什么老师老师 大家好,我是某某老师,今年多少岁,工作几年了大家好,我是某某老师,今年多

    49、少岁,工作几年了子类中访问继承父类子类中访问继承父类的公共属性的公共属性子类特有属性子类特有属性继承的实际应用继承的实际应用2公共属性加入父类公共属性加入父类有独自的有独自的SayHi()继承的实际应用继承的实际应用3Teacher和和Student类都继承类都继承Personpublic class Student:Personpublic class Teacher:Personpublic Student(string name,Genders gender,int age,string hobby,int popularity)this.Name=name;this.Age=age;t

    50、his.Gender=gender;/学生类扩展的属性学生类扩展的属性 this.Hobby=hobby;this.Popularity=popularity;构造函数设置公共属构造函数设置公共属性与独有属性性与独有属性继承自父类的公共属性继承自父类的公共属性子类扩展的属性子类扩展的属性继承的实际应用继承的实际应用4都有不同的都有不同的SayHi()方法方法public void SayHi()/学生的学生的SayHipublic void SayHi()/老师的老师的SayHi创建对象调用创建对象调用SayHi()Student zhang=new Student();Teacher jac

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:C#面向对象课件.pptx
    链接地址:https://www.163wenku.com/p-4766856.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库