c#类基础知识ppt课件
烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人类烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人类与对象烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人类与对象类与对象 类是一个样板,以操作、表示和算法的形式完整地定义了一组对象的行为。它通常也是面向对象语言中的模块化、封装和数据抽象的基础。对象是类的一个实例,是一个软件单元,它由一组结构化的数据和在其上的一组操作构成。烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人类与对象类与对象烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人类与封装烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人封装封装 隐藏对象的信息隐藏对象的信息 留出访问的接口留出访问的接口烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人属性的封装属性的封装在在C#程序中程序中我们通常使用属性对字段进行我们通常使用属性对字段进行封装封装烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人方法(一)方法(一)烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人方法(二)方法(二)烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人方法(三)方法(三)Public void PlayGame()/方法的声明方法的声明 /方法的实现方法的实现 Console.WriteLine(“我是头号玩家!我是头号玩家!”);烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人方法(四)方法(四)无参方法的调用无参方法的调用 Child.PlayBall();带参方法的调用带参方法的调用 Child.Sports(参数);烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人方法的重载方法的重载 同一个类中,多个方法名字相同,但同一个类中,多个方法名字相同,但参数参数(类型或数量)(类型或数量)不同不同Class Chlid public void Sports(string sport);/代码代码 public void Sports(int count);/代码代码 烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人构造方法(一)构造方法(一)Child xMing=new Child();/调用构造方法调用构造方法作用:为属性赋值作用:为属性赋值注:如果没有显示的定义构造方法,则会有注:如果没有显示的定义构造方法,则会有一个默认的无参数的构造方法;如果定义一个默认的无参数的构造方法;如果定义了构造方法,则没有默认构造方法;了构造方法,则没有默认构造方法;烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人构造方法(二)构造方法(二)只能用只能用new 方法名方法名()的形式调用构造方法;的形式调用构造方法;构造方法通常声明为构造方法通常声明为public;构造方法没有返回值类型;构造方法没有返回值类型;构造方法名必须与类名相同;构造方法名必须与类名相同;烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人构造方法(三)构造方法的重载:与普通方法的重载相同;构造方法的重载:与普通方法的重载相同;注意:当我们定义了有参构造方法后,就注意:当我们定义了有参构造方法后,就不能再有默认的无参构造方法了;不能再有默认的无参构造方法了;烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人构造方法(四)对象的初始化:对象的初始化:Child xiaozhu=new Child()Name=“佩奇”,Age=5;注:类里面要包含一个无参构造方法烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人值类型Int a=3;Int b=a;-a;赋值会创建值的副本,修改任一个赋值会创建值的副本,修改任一个副本,不影响其它副本。副本,不影响其它副本。烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人引用类型 引用类型变量存储对象的内存地址,赋值不会创建值的副本,只会创建地址的副本,修改任何一个副本,也同时修改其他的副本。烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人传参 引用类型参数,按引用传参,方法修改形引用类型参数,按引用传参,方法修改形参,实参也会被相应的修改;参,实参也会被相应的修改;值类型参数,按值传参,方法修改形参,值类型参数,按值传参,方法修改形参,实参不会被修改;实参不会被修改;烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人结构(一)结构(struct)是能够包含数据成员和函数成员的数据结构。结构类型的变量直接存储该结构的数据。所有结构类型都隐式地从类型System.ValueType继承。System.ValueType继承自System.Object。结构是值类型,不需要在堆分配结构类型不允许继承。结构类型不允许继承。烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人结构(二)/用用structstruct修饰,表示一个结构类型修饰,表示一个结构类型 structstruct PointPoint publicpublic intint x;x;publicpublic intint y;y;publicpublic Point(Point(intint x,x,intint y)y)thisthis.x=x;.x=x;thisthis.y=y;.y=y;烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人结构(三)结构中可以定义字段、属性和方法;结构中可以定义字段、属性和方法;不能为结构中的字段赋初值;不能为结构中的字段赋初值;结构的构造方法中必须为结构的构造方法中必须为所有所有字段赋值;字段赋值;不能为结构显示定义不能为结构显示定义无参数无参数的构造方法;的构造方法;结构类型的对象可以不实例化;结构类型的对象可以不实例化;烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人枚举(一)枚举(enum)是具有一组命名常量的独特的值(结构)类型每个枚举类型都有一个相应的整型类型,称为该枚举类型的基础类型(underlying type)。没有显式声明基础类型的枚举类型所对应的基础类型是 int。枚举类型的存储格式和取值范围由其基础类型确定。所有枚举类型默认继承自System.Enum类型,System.Enum继承自System.ValueType。故枚举为结构类型。烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人枚举(二)/:long表示基础类型是long/如果不写则默认为intenum Alignment:long /=也可不写,默认则是以0开始,依次加1 Left=-1,Center=0,Right=1烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人类与继承烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人继承(一)为什么需要继承 减少重复的代码 实现继承 一个类派生于另一个基类,它拥有该基础类型的所有成员字段和函数烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人继承(二)语法 class ChildClass:ParentClass 子类是父类的一种特殊情况或者具体情况烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人继承(三)特殊基类Object Object类是所有类的共同基类,它是唯一的非派生类,继承层级结构的基础。规则 继承只有单继承,也就是只能继承一个父类,当然该父类可以继承自一个祖父类,直到object类。烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人隐藏方法 用与基类成员名称相同的成员来屏蔽基类成员 语法:屏蔽数据成员:在派生类中声明名称和类型相同的成员;屏蔽方法成员:在派生类中声明新的带有相同方法签名的成员;添加new关键字,否则可能报错;烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人构造方法 派生类对象中,包含基类部分,在执行派生类的构造方法之前,将会隐式或显式的调用基类构造方法;调用顺序:实例成员初始化基类构造方法派生类构造方法烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人类与多态烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人多态 基类描述了共同的属性和行为。但是,子类具有差异性,统一的行为在基类和派生类中也有所区别。为了兼顾共性又能体现出个性,我们可以使用虚方法和多态的武器。烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人虚方法和多态(一)声明为virtual的方法就是虚方法。基类的虚方法可以在派生类中使用override进行重写。通过指向派生类的基类引用,调用虚方法,会根据引用所指向派生类的实际类型,调用派生类中的同名重写方法,便是多态。烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人虚方法和多态(二)u重写虚方法必须具有相同的可访问性,且基类方法必须是非private;u不能重写static方法或者非虚方法;u方法,属性,索引器,事件,都可以声明为virtual。烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人抽象方法和抽象类(一)抽象方法 abstract public void Func();注:抽象方法不能有实体,包含抽象方法的类必须声明为抽象类;烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人抽象方法和抽象类(二)抽象类 abstract class Student 烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人抽象方法和抽象类(三)抽象类 用abstract修饰;抽象类不能实例化;抽象类中可以包含抽象成员和普通成员,以及他们的任意组合;抽象类的抽象成员在派生类中需要用override关键字实现 烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人密闭方法和密闭类(一)有些方法不希望被重写,有些类不希望通过继承而被修改,那么可以用sealed去修饰;基类方法不允许子类对其重写时,可以不声明为virtual;派生类中的方法不允许其子类对其重写,同时该方法是override的,就可以使用sealed。烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人接口烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人接口(一)接口的语法结构:public interface Iexam:基接口列表 void Exam();烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人接口(二)对接口方法的调用与类中的情况相同。如果底层成员的命名与继承而来的高层成员一致,那么底层成员将屏蔽掉同名的高层成员。烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人接口(三)接口成员访问权限为public,但不能加访问修饰符;接口成员不能有定义;接口的成员必须是方法,属性,事件或索引器,不能包含常数、字段、运算符等;烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人接口(四)只能用来被实现 class ArtStudent:Iexam,ISport public void Exam()烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人接口(五)接口支持多继承,在多继承中,如果两个父接口含有同名的成员,这就产生了二义性,在实现时需要进行显式的声明,且显式接口成员为private。烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人索引烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人索引(一)索引器允许类或者结构的实例按照与数组相同的方式进行索引。访问修饰符 类型名 this参数列表 get set 烧伤病人的治疗通常是取烧伤病人的健康皮肤进行自体移植,但对于大面积烧伤病人来讲,健康皮肤很有限,请同学们想一想如何来治疗该病人索引(一)索引器允许用户按照处理数组的方式索引类,访问时有两种形式使用索引器可以直接访问类实例;将数组声明为public成员并直接访问数组的成员;