《C Sharp 3.0从基础到项目实战》课件第7章类 与 对 象.ppt

上传人(卖家):momomo 文档编号:6094188 上传时间:2023-05-27 格式:PPT 页数:32 大小:348.50KB
下载 相关 举报
《C Sharp 3.0从基础到项目实战》课件第7章类 与 对 象.ppt_第1页
第1页 / 共32页
《C Sharp 3.0从基础到项目实战》课件第7章类 与 对 象.ppt_第2页
第2页 / 共32页
《C Sharp 3.0从基础到项目实战》课件第7章类 与 对 象.ppt_第3页
第3页 / 共32页
《C Sharp 3.0从基础到项目实战》课件第7章类 与 对 象.ppt_第4页
第4页 / 共32页
《C Sharp 3.0从基础到项目实战》课件第7章类 与 对 象.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、 本章将首先介绍面向对象编程的基本概念,继而介绍本章将首先介绍面向对象编程的基本概念,继而介绍面向对象的基本内容,包括类与对象。本章将着重介绍类面向对象的基本内容,包括类与对象。本章将着重介绍类与对象的概念、类内部的数据成员与函数成员以及这些成与对象的概念、类内部的数据成员与函数成员以及这些成员的访问方式。最后介绍静态类、静态成员、部分类和命员的访问方式。最后介绍静态类、静态成员、部分类和命名空间等。名空间等。章节内容章节内容7.1 面向对象编程的基本知识面向对象编程的基本知识7.2 类与对象类与对象 7.3 类的成员类的成员 7.4 部分类部分类 7.5 类与命名空间类与命名空间 7.6 小

2、结小结 7.1.1 面向对象编程的历史 1967年年5月月20日,挪威奥斯陆计算机中心的日,挪威奥斯陆计算机中心的Ole-Johan Dahl和和Kristen Nygaad为了解决模拟问题,设计了第一个为了解决模拟问题,设计了第一个面向对象的程序设计语言面向对象的程序设计语言Simula,此时就有了类和实例化,此时就有了类和实例化的概念。的概念。70年代,年代,PARC研究所推出了研究所推出了Smalltalk语言,引入了动态语言,引入了动态对象和继承性思想。对象和继承性思想。Smalltalk语言被认为是第一个真正的语言被认为是第一个真正的面向对象程序语言。面向对象程序语言。到到80年代中

3、后期,面向对象的程序设计日益成熟,并被整年代中后期,面向对象的程序设计日益成熟,并被整个计算机界接受和追逐,面向对象的开发问题便出现了。个计算机界接受和追逐,面向对象的开发问题便出现了。90年代,年代,Microsoft Visual系列面向对象的程序设计软件系列面向对象的程序设计软件逐渐流行,面向对象的编程已经成为无可取代的潮流,并逐渐流行,面向对象的编程已经成为无可取代的潮流,并在无数人的努力下,逐渐走向成熟。在无数人的努力下,逐渐走向成熟。7.1.2 面向对象编程的概念 面向对象编程的对象,即系统中用于描述客观事面向对象编程的对象,即系统中用于描述客观事物的一个实体,是构成系统的一个基本

4、单位。物的一个实体,是构成系统的一个基本单位。面向对象编程中的类,是具有相同数据成员和函面向对象编程中的类,是具有相同数据成员和函数成员的一组对象的集合,它为属于该类的全部数成员的一组对象的集合,它为属于该类的全部对象提供了抽象的描述。对象提供了抽象的描述。面向对象编程的基本内容就是把数据和函数面向对象编程的基本内容就是把数据和函数“封封装装”到编程所必需的到编程所必需的“对象对象”中,程序由一个个中,程序由一个个能够起到子程序作用的对象(或单元)组合而成能够起到子程序作用的对象(或单元)组合而成 7.1.3 面向对象编程的基本特点 1封装。面向对象技术中的封装,简单来说就封装。面向对象技术中

5、的封装,简单来说就是将代码及其处理的数据绑定在一起,形成一个是将代码及其处理的数据绑定在一起,形成一个独立单位,对外实现完整功能,并尽可能隐藏对独立单位,对外实现完整功能,并尽可能隐藏对象的内部细节象的内部细节。2继承。继承(继承。继承(Inheritance)也称作派生,指)也称作派生,指的是特殊类的对象自动拥有一般类的全部数据成的是特殊类的对象自动拥有一般类的全部数据成员与函数成员(构造函数和析构函数除外)。员与函数成员(构造函数和析构函数除外)。3多态。多态性(多态。多态性(Polymorphism)是指一般类)是指一般类中定义的属性或行为,被特殊类继承之后,可以中定义的属性或行为,被特

6、殊类继承之后,可以具有不同的数据类型或表现出不同的行为。具有不同的数据类型或表现出不同的行为。7.2 类与对象角色名:性别:出处:地位:门派地位:爱侣:父亲:母亲:张无忌男倚天屠龙记主角明教教主赵敏张翠山殷素素类对象7.2.1 类的定义1.1.语法:语法:class-modifiers class identifier:class-base class-body;2.2.注意:注意:l工程是任何工程是任何.NET Framework应用程序的基本构造块,可以简单理解应用程序的基本构造块,可以简单理解 为一个为一个EXE或或DLL。l类的默认修饰符为类的默认修饰符为internal。l一个类只能

7、有一个访问修饰符,使用一个类只能有一个访问修饰符,使用protected internal组合时除外。组合时除外。l子类的可访问性不能高于父类。子类的可访问性不能高于父类。7.2.1 类的定义修饰符含义特点public公共对该类的访问不限制private私有访问仅限于类本身protected受保护访问仅限于类本身或从包含类派生的类型internal内部访问仅限于当前工程,类的默认修饰符abstract抽象该类不能生成实例sealed密封该类不允许被继承new只嵌套用表明类中隐藏了由基类中继承来的,与基类中同名的类型7.2.2 对象 语法:Role ZhangWuji=new Role();张无

8、忌男倚天屠龙记主角明教教主赵敏张翠山殷素素7.3 类的成员类的成员主要有数据成员和函数成员,也类的成员主要有数据成员和函数成员,也可以嵌套其他类型(如其他类、结构、枚可以嵌套其他类型(如其他类、结构、枚举等)举等)。7.3.1 成员访问属性修饰符含义特点public公有成员任何代码均可以访问该成员private私有成员仅限类内部的成员才能访问该成员,是默认访问属性protected保护成员所在类和所在类的派生类可以访问internal内部成员程序集内部可以访问using System;class Vehicle/定义汽车类定义汽车类 public int wheels;/公有成员:轮子个数公有

9、成员:轮子个数 protected float weight;/保护成员:重量保护成员:重量 public void F()wheels=4;/正确,允许访问自身成员正确,允许访问自身成员 weight=10;/正确,允许访问自身成员正确,允许访问自身成员 7.3.1 成员访问属性class train/定义火车类定义火车类 public int num;/公有成员:车厢数目公有成员:车厢数目 private int passengers;/私有成员:乘客数私有成员:乘客数 private float weight;/私有成员:重量私有成员:重量 public void F()num=5;/正

10、确,允许访问自身成员正确,允许访问自身成员 weight=100;/正确,允许访问自身成员正确,允许访问自身成员 Vehicle v1=new Vehicle();V1.wheels=4;/正确,允许访问正确,允许访问v1的公有成员的公有成员 /v1.weight=6;/错误,不允许访问错误,不允许访问v1的保护成员的保护成员 7.3.1 成员访问属性类的数据成员包含字段、常量和事件。类的数据成员包含字段、常量和事件。1字段。字段用于表示与对象或类相关联的变量,包括字段。字段用于表示与对象或类相关联的变量,包括静态字段、实例字段和只读字段。静态字段、实例字段和只读字段。见下例。见下例。2常量。

11、常量与类的关联方式和变量与类的关联方式相常量。常量与类的关联方式和变量与类的关联方式相同。使用同。使用const关键字声明常量,如果它们声明为关键字声明常量,如果它们声明为public,就可以在类的外部访问。见下例。就可以在类的外部访问。见下例。3事件。事件是类的成员,在类或对象发生某些行为事件。事件是类的成员,在类或对象发生某些行为(例如用户的交互操作或者改变了类的某些字段或属性)(例如用户的交互操作或者改变了类的某些字段或属性)时,它可以让对象通知调用程序。客户端可以包含所谓时,它可以让对象通知调用程序。客户端可以包含所谓“事件处理程序事件处理程序”的代码来响应该事件。有关事件的详细的代码

12、来响应该事件。有关事件的详细介绍可参见第介绍可参见第9章。章。7.3.2 数据成员class Goods public double height;/实例字段实例字段 public readonly double width=30;/只读字段在声明时赋值只读字段在声明时赋值 public static int count=0;/静态字段,静态字段,public Goods(double h,double w)height=h;width=w;/只读字段在构造函数中赋值只读字段在构造函数中赋值 count+;static void Main(string args)Goods y=new Goo

13、ds(100,200);Console.WriteLine(height=0,width=1,count=2,y.height,y.width,Goods.count);Goods z=new Goods(300,400);Console.WriteLine(height=0,width=1,count=2,z.height,z.width,Goods.count);/z.width=700;则编译错误。只读字段不能在这里赋值则编译错误。只读字段不能在这里赋值 7.3.2 数据成员字段例子class Vehicle /定义汽车类定义汽车类 public const string country

14、=China;/共有常量成共有常量成员员 public int wheels;/公有成员:轮子个数公有成员:轮子个数 protected float weight;/保护成员:重量保护成员:重量7.3.2 数据成员常量例子7.3.3 函数成员类的函数成员包括方法、属性、运算符、索引器、类的函数成员包括方法、属性、运算符、索引器、构造函数和析构函数。构造函数和析构函数。1方法。方法是表现类或对象行为的成员函数。方法。方法是表现类或对象行为的成员函数。2属性。属性用于描述对象的特征或表示对象的属性。属性用于描述对象的特征或表示对象的 状态,提供对类或对象性质的访问。状态,提供对类或对象性质的访问。

15、3运算符。运算符执行的最简单的操作,即运算符。运算符执行的最简单的操作,即+和和-4索引器。索引器允许对象以数组或集合的方式索引器。索引器允许对象以数组或集合的方式进行索引。进行索引。5构造函数和析构函数构造函数和析构函数class TestMethod int square(int x)return x*x;double square(double x)return x*x;decimal square(decimal x)return x*x;static void Main()TestMethod t=new TestMethod();Console.WriteLine(The squa

16、re id 0,1,2,t.square(10),t.square(12.34),t.square(123.456m);7.3.3 函数成员方法例子class Window private double width=30;public double Width get return width;set width=value;static void Main(string args)Window y=new Window();y.Width=200;Console.WriteLine(The width of window is 0,y.Width);7.3.3 函数成员属性例子7.3.4 构

17、造函数和析构函数1构造函数构造函数构造函数是特殊的成员函数,主要用于为对象分构造函数是特殊的成员函数,主要用于为对象分配空间,完成初始化工作。配空间,完成初始化工作。构造函数的名称必须与类名相同。构造函数的名称必须与类名相同。构造函数可以带参数,但没有返回值。构造函数可以带参数,但没有返回值。构造函数在对象定义时被自动调用。构造函数在对象定义时被自动调用。若没有为类定义构造函数,则系统会生成默认的若没有为类定义构造函数,则系统会生成默认的构造函数。构造函数。构造函数可以被重载,但不可以被继承。构造函数可以被重载,但不可以被继承。7.3.4 构造函数和析构函数类型默认值sbyte、byte、sh

18、ort、ushort、int、uint、long、ulong0charx0000float0.0fdouble0.0ddecimal0.0mboolfalse枚举类型0结构类型把所有成员为类型的默认值引用类型空引用null7.3.4 构造函数和析构函数class Car private string description;private uint wheels;public Car(string description,uint wheels)this.description=description;this.wheels=wheels;public Car(string descripti

19、on)this.description=description;this.wheels=4;7.3.4 构造函数和析构函数2析构函数析构函数析构函数也是特殊的成员函数,主要用于释放类析构函数也是特殊的成员函数,主要用于释放类实例,它的特殊性表现如下。实例,它的特殊性表现如下。析构函数的名称与类名相同,但前面加一个析构函数的名称与类名相同,但前面加一个“”符号。符号。析构函数不能带参数,也没有返回值。析构函数不能带参数,也没有返回值。当撤销对象时,自动调用析构函数,在代码中不当撤销对象时,自动调用析构函数,在代码中不能调用析构函数。能调用析构函数。析构函数不能被继承,也不能被重载。析构函数不能被

20、继承,也不能被重载。7.3.4 构造函数和析构函数class MyClass MyClass()/代码代码 7.4 静态类和静态成员静态类无需创建实例就能够访问数据和函数,静态类无需创建实例就能够访问数据和函数,当类中没有依赖对象标识的数据或行为时,就当类中没有依赖对象标识的数据或行为时,就可以使用静态类。静态类在加载包含该类的程可以使用静态类。静态类在加载包含该类的程序或命名空间时,由序或命名空间时,由.NET Framework公共语公共语言运行库(言运行库(CLR)自动加载。)自动加载。7.4 静态类和静态成员静态类需要注意如下事项:静态类需要注意如下事项:静态类是不能实例化的类,因而静

21、态类类型的变量也就不能使用静态类是不能实例化的类,因而静态类类型的变量也就不能使用 new 关键字创建。关键字创建。静态类不能被继承。静态类不能被继承。静态类默认继承自静态类默认继承自System.Object根类,不能显式指定任何其他基根类,不能显式指定任何其他基类。类。静态类不能有实例构造函数,系统也不会为其提供默认构造函数,静态类不能有实例构造函数,系统也不会为其提供默认构造函数,但可以包含静态构造函数。但可以包含静态构造函数。静态类不能有任何实例成员,但可以有常量成员。静态类不能有任何实例成员,但可以有常量成员。静态类不能实现任何接口,有关接口的介绍可参见第静态类不能实现任何接口,有关

22、接口的介绍可参见第8章。章。静态类的成员不能有静态类的成员不能有protected或或protected internal访问修饰符。访问修饰符。静态类的成员默认并不是静态类的成员默认并不是static类型的,必须用类型的,必须用static修饰符显式声修饰符显式声明成员。明成员。7.4 静态类和静态成员在类中,声明为在类中,声明为static的成员就是静态成员,的成员就是静态成员,不需不需static修饰的成员默认情况下为实例成员。修饰的成员默认情况下为实例成员。静态成员通常用于表示不随对象状态而变化的静态成员通常用于表示不随对象状态而变化的数据或计算。但是,一个类成员是否为静态成数据或计算

23、。但是,一个类成员是否为静态成员,与类本身是否静态无关。员,与类本身是否静态无关。class Student int SNO;static int count;public Student(int s)SNO=s;count+;public void display()Console.WriteLine(count=0,SNO=1,count,SNO);7.4 静态类和静态成员class TestStudent public static void Main()Student s1=new Student(12);s1.display();Student s2=new Student(20);

24、s2.display();7.4 静态类和静态成员7.5 部分类使用部分类定义就是把类的定义放在多个文件中,使用部分类定义就是把类的定义放在多个文件中,使用使用partial关键字,允许把字段、属性、方法和关键字,允许把字段、属性、方法和构造函数等分开存放。构造函数等分开存放。语法形式:语法形式:public partial class MyClass 7.6 类与命名空间 命名空间是一种逻辑上的概念,表示范围,用于命名空间是一种逻辑上的概念,表示范围,用于把相关的类或其他的类型组织起来。把相关的类或其他的类型组织起来。namespace TIANLONGpublic class Role/角

25、色类角色类 /代码代码 sealed class Scenario/情节类情节类/代码代码 7.7 小结 类的成员主要有数据成员和函数成员,也可以嵌套其他类型类的成员主要有数据成员和函数成员,也可以嵌套其他类型(如其他类、结构、枚举等)。其中,类的数据成员包括字段、(如其他类、结构、枚举等)。其中,类的数据成员包括字段、常量和事件,类的函数成员包括方法、属性、运算符、索引器、常量和事件,类的函数成员包括方法、属性、运算符、索引器、构造函数和析构函数。构造函数和析构函数。C#类的成员具有不同的访问属性,包类的成员具有不同的访问属性,包括括public、private、protected、internal。类的成员具有不。类的成员具有不同的性质,分别为静态成员和实例成员。静态类里的成员一定同的性质,分别为静态成员和实例成员。静态类里的成员一定是静态成员,而静态成员却不一定在静态类中。部分类把类的是静态成员,而静态成员却不一定在静态类中。部分类把类的定义分开存储在不同的物理文件中,通过命名空间,在逻辑上定义分开存储在不同的物理文件中,通过命名空间,在逻辑上把把C#复杂的代码有机地组织起来,二者在实际大型程序的开复杂的代码有机地组织起来,二者在实际大型程序的开发中会十分有用。发中会十分有用。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 各类题库
版权提示 | 免责声明

1,本文(《C Sharp 3.0从基础到项目实战》课件第7章类 与 对 象.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

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


163文库-Www.163Wenku.Com |网站地图|