最新C#的面向对象程序设计(共76张PPT课件).pptx
《最新C#的面向对象程序设计(共76张PPT课件).pptx》由会员分享,可在线阅读,更多相关《最新C#的面向对象程序设计(共76张PPT课件).pptx(76页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6章章 C#的面向对象程序设计的面向对象程序设计(chn x sh j)第一页,共七十六页。内容提要:内容提要: 类、对象的概念及使用类、对象的概念及使用 方法、属性、索引的概念、声明及调用方法、属性、索引的概念、声明及调用 构造函数和析构函数的定义构造函数和析构函数的定义 继承和接口的用法继承和接口的用法 委托和事件委托和事件(shjin)的声明及调用的声明及调用目的要求:目的要求: 理解类、对象、构造函数和析构函数的意义理解类、对象、构造函数和析构函数的意义 掌握方法、属性、索引的用法掌握方法、属性、索引的用法 掌握继承和接口、委托和事件的声明及调用掌握继承和接口、委托和事件的声明及调
2、用重点难点:重点难点: 类、对象、方法、属性、继承、接口、委托和事件类、对象、方法、属性、继承、接口、委托和事件第二页,共七十六页。 面向对象的程序设计面向对象的程序设计( OOP )的主要思想是将数据及处的主要思想是将数据及处 理这些数据的操作都封装到一个理这些数据的操作都封装到一个(y )称为类(称为类(Class)的数据结)的数据结 构中。使用这个类时,只需要定义一个类的变量即可,这构中。使用这个类时,只需要定义一个类的变量即可,这 个变量叫做对象(个变量叫做对象(Object)。通过调用对象的数据成员完)。通过调用对象的数据成员完 成对类的使用。成对类的使用。 1. 类类 在面向对象理
3、论中,类(在面向对象理论中,类(class)就是对具有相同特征的一类就是对具有相同特征的一类事物所做的抽象(或者说,归纳)。事物所做的抽象(或者说,归纳)。 6.1 面向对象程序设计面向对象程序设计(chn x sh j)的基本概念的基本概念第三页,共七十六页。 2. 对象对象 类是一种抽象,而对象类是一种抽象,而对象(object)则是实例则是实例(shl)(instance), 是具体的。是具体的。 如果使用如下格式来代表一个类生成一个对象:如果使用如下格式来代表一个类生成一个对象: 类名类名 对象名;对象名; 则:则: 电子计算机电子计算机 ComputerA; 电子计算机电子计算机 C
4、omputerB; 就代表就代表ComputerA和和ComputerB是是“电子计算机电子计算机”类的两个不类的两个不同对象。同对象。第四页,共七十六页。 3. 类的属性类的属性 属性说明了这个类的特点。属性说明了这个类的特点。 例如例如“PC计算机计算机”类则可能具备类则可能具备(jbi)如下属性:如下属性: 计算机的名称计算机的名称 CPU类型类型 内存容量内存容量 硬盘容量硬盘容量 主板型号主板型号 显示适配器型号显示适配器型号 声卡型号声卡型号 操作系统类型操作系统类型 通过这些属性,就可以将不同的通过这些属性,就可以将不同的PC计算机区分开。计算机区分开。第五页,共七十六页。 3.
5、 类的属性类的属性(shxng) 属性说明了这个类的特点。属性说明了这个类的特点。 例如例如“PC计算机计算机”类则可能具备如下属性:类则可能具备如下属性: 计算机的名称计算机的名称 CPU类型类型 内存容量内存容量 硬盘容量硬盘容量 主板型号主板型号 显示适配器型号显示适配器型号 声卡型号声卡型号 操作系统类型操作系统类型 通过这些属性,就可以将不同的通过这些属性,就可以将不同的PC计算机区分开。计算机区分开。第六页,共七十六页。 4. 类的方法类的方法(fngf) 类的方法(类的方法(method)代表了一类事物所具备的动作,代表了一类事物所具备的动作, 是对属性的操作。是对属性的操作。
6、比如:比如:“石英钟石英钟”类的方法有:秒针前进一格、分类的方法有:秒针前进一格、分 针前进一格、时针前进一格等针前进一格、时针前进一格等;而而“录像机录像机”类所具备类所具备 的方法可以有:播放、定格、录像、倒带、快进等。的方法可以有:播放、定格、录像、倒带、快进等。 第七页,共七十六页。 5. 派生和继承派生和继承(jchng) 在类的继承中,被继承的类称为基类(又称为父类),在类的继承中,被继承的类称为基类(又称为父类), 由基类继承的类称为派生类(又称为子类)。派生类自动获由基类继承的类称为派生类(又称为子类)。派生类自动获 得基类的所有属性和方法,而且可以在派生类中添加新的属得基类的
7、所有属性和方法,而且可以在派生类中添加新的属 性和方法。性和方法。 第八页,共七十六页。 6. 多态性多态性 多态性是指在一般类中定义的属性或行为,被特殊多态性是指在一般类中定义的属性或行为,被特殊 类继承之后,可以具有类继承之后,可以具有(jyu)不同数据类型或表现出不同的行不同数据类型或表现出不同的行 为。就是程序在运行时,会自动判断对象的派生类型,为。就是程序在运行时,会自动判断对象的派生类型, 并调用相应的方法。并调用相应的方法。 7. 封装封装 封装就是把对象的属性和服务结合成一个独立的系封装就是把对象的属性和服务结合成一个独立的系 统单位,并尽可能隐蔽对象的内部细节统单位,并尽可能
8、隐蔽对象的内部细节。第九页,共七十六页。 6.2 类和对象类和对象 6.2.1 类的声明类的声明 类是类是C#的一种自定义数据类型,其声明格式为:的一种自定义数据类型,其声明格式为: 类修饰符类修饰符 class 类名类名(li mn):基类类名:基类类名 类的成员;类的成员; ; 说明:说明:C#支持的类修饰符有:支持的类修饰符有:new、public、protected、 internal、private、abstract、sealed。 第十页,共七十六页。例:定义一个车辆例:定义一个车辆(chling)类(有三个变量)类(有三个变量) class Vehicle public int
9、passengers; /乘客数乘客数 public int fuelcap; /所耗燃料所耗燃料 public int mpg; /每公里耗油量每公里耗油量 第十一页,共七十六页。6.2.2 类的成员类的成员 类可以分为两大类:类本身所声明的,以及类可以分为两大类:类本身所声明的,以及(yj)从基类中继承而来的。从基类中继承而来的。 在在C中,按照类的成员是否为函数将其分为两种:中,按照类的成员是否为函数将其分为两种: 一种不以函数形式体现,称为成员变量;一种不以函数形式体现,称为成员变量; 另一种是以函数形式体现,称为成员函数。另一种是以函数形式体现,称为成员函数。 第十二页,共七十六页。
10、1. 类成员类成员(chngyun)的访问修饰符的访问修饰符 (1)public: 允许类的内部或外界直接访问;允许类的内部或外界直接访问; (2)private: 不允许外界访问,也不允许派生类不允许外界访问,也不允许派生类 访问,即只能在类的内部访问。如访问,即只能在类的内部访问。如 果没有设定访问修饰符,默认为果没有设定访问修饰符,默认为 private; (3)protected: 不允许外界访问,但允许派生类不允许外界访问,但允许派生类 访问;访问; (4)internal: 只有本类的成员才能访问。只有本类的成员才能访问。 (5)readonly:该成员的值只能读,不能写。也就:该
11、成员的值只能读,不能写。也就 是说,除了赋予初始值外,在程序是说,除了赋予初始值外,在程序 的任何一个部分将无法更改这个成的任何一个部分将无法更改这个成 员的值。员的值。 第十三页,共七十六页。class ClassA public int a; private int b; protected int c; public void SetA( ) a=1; /正确正确(zhngqu),允许访问类自身公有成员,允许访问类自身公有成员 b=2; /正确,允许访问类自身私有成员正确,允许访问类自身私有成员 c=3; /正确,允许访问类自身保护成员正确,允许访问类自身保护成员 class Class
12、B:ClassA public void SetB( ) ClassA BaseA=new ClassA( ); BaseA.a=5; /正确,允许访问基类公有成员正确,允许访问基类公有成员 BaseA.b=23; /错误,不允许访问基类私有成员错误,不允许访问基类私有成员 BaseA.c=68; /正确,允许访问基类保护成员正确,允许访问基类保护成员 class ClassC public void SetB( ) ClassA BaseA=new ClassA( ); BaseA.a=5; /正确,允许访问类的其他公有成员正确,允许访问类的其他公有成员 BaseA.b=23; /错误,不允
13、许访问类的其他私有成员错误,不允许访问类的其他私有成员 BaseA.c=68; /错误,不允许访问类的其他保护成员错误,不允许访问类的其他保护成员 第十四页,共七十六页。 2. 静态成员与非静态成员静态成员与非静态成员 静态成员是在声明成员时在前面加上静态成员是在声明成员时在前面加上static保留字;保留字; 非静态成员是在声明成员时前面没有非静态成员是在声明成员时前面没有static保留字;保留字; 静态成员属于静态成员属于(shy)类所有,非静态成员属于类所有,非静态成员属于(shy)类的对象所类的对象所有。有。 静态成员的访问格式:静态成员的访问格式: 类名类名.静态成员名静态成员名第
14、十五页,共七十六页。 若将类中的某个若将类中的某个(mu )成员声明为成员声明为static,则该成员称为,则该成员称为静态静态 成员成员。类中的成员要么是静态的,要么是非静态的。类中的成员要么是静态的,要么是非静态的。 类的类的非静态非静态成员属于类的实例所有,每创建一个类的成员属于类的实例所有,每创建一个类的 实例都在内存中为非静态成员开辟了一块区域。而类的静实例都在内存中为非静态成员开辟了一块区域。而类的静 态成员属于类所有,为这个类的所有实例所共享。无论这态成员属于类所有,为这个类的所有实例所共享。无论这 个类创建了多少个对象(实例),一个静态成员在内存中只占有一块区个类创建了多少个对
15、象(实例),一个静态成员在内存中只占有一块区域。域。第十六页,共七十六页。例:静态成员的访问例:静态成员的访问using System;class Myclass public int nIndex=10; static public double fphi=45.6; class classTest static void Main( ) int a=Myclass.nIndex; /错误错误(cuw),因为,因为nIndex是非是非静态成员静态成员 double b= Myclass.fphi; /正确,因为正确,因为fphi是静态成员是静态成员 Console.Write(b); 第十七
16、页,共七十六页。6.2.3 对象的声明对象的声明 创建类的对象。分两步:创建类的对象。分两步: (1)先声明对象名)先声明对象名 格式:格式: 类名类名 对象名;对象名; 例:例:Vehicle minivan; /定义定义(dngy)类类Vehicle的一个对象的一个对象 (2)创建类的实例。)创建类的实例。 格式:对象名格式:对象名=new 类名类名( ); 例:例:minivan=new Vehicle( ); /创建一个实例创建一个实例 以上两步也可以合并成一步。以上两步也可以合并成一步。 格式:格式: 类名类名 对象名对象名=new 类名类名( ) ; 例:例: Vehicle mi
17、nivan =new Vehicle( );第十八页,共七十六页。6.3 构造函数和析构函数构造函数和析构函数 C#C#中有两个特殊中有两个特殊(tsh)(tsh)的函数:构造函数和析构函数。的函数:构造函数和析构函数。 构造函数构造函数:当类实例化时首先执行的函数;:当类实例化时首先执行的函数; 析构函数析构函数:当实例(即对象)从内存中销毁前最后执行:当实例(即对象)从内存中销毁前最后执行 的函数。的函数。 第十九页,共七十六页。6.3.1 构造函数构造函数 在在C#中,当创建一个对象时,系统首先为这个对象赋予一中,当创建一个对象时,系统首先为这个对象赋予一个标识符,然后给对象分配合适的内
18、存空间,随后个标识符,然后给对象分配合适的内存空间,随后(suhu)系统就自系统就自动调用对象的构造函数。动调用对象的构造函数。 构造函数的类型修饰符总是构造函数的类型修饰符总是public,因为构造函数主要是,因为构造函数主要是在类外创建对象时自动调用。在类外创建对象时自动调用。格式:格式: class 类名类名 public 类名类名( ) /构造函数体构造函数体 第二十页,共七十六页。 例:例:using System; class MyClass public int x; public Myclass() /类类MyClass的构造函数的构造函数 x=10; class ConsDe
19、mo public static void Main() MyClass t1=new MyClass(); MyClass t2=new MyClass(); Console.WriteLine(“0t1”,t1.x, t2.x); 运行结果运行结果(ji gu)如下:如下:第二十一页,共七十六页。 构造函数也可以构造函数也可以(ky)带参数。带参数。 例:例:using System; class Fruit public string color; public string shape; public Fruit(string c,string s) /类类Fruit的构造函数的构造函
20、数 color=c; shape=s; class Test public static void Main() Fruit Orange=new Fruit(“orange”,”round”);/创建创建(chungjin)Orange实例实例 Console.WriteLine(“0,1”,Orange.color, Orange.shape); 运行结果运行结果(ji gu)如下:如下:第二十二页,共七十六页。 构造函数也可以构造函数也可以(ky)重载。重载。例:例:using System; class A public int count;public A() count=-1; p
21、ublic A(int n) count=n; class Test static void Main() A a=new A(); Console.WriteLine(count=0,a.count); A b=new A(5);Console.WriteLine(count=0,b.count); 运行运行(ynxng)结果如下:结果如下:第二十三页,共七十六页。使用使用 this关键字关键字 C#中的中的this关键字是用来代表对象关键字是用来代表对象(duxing)自身。自身。this一般用在构造函数中,一般用在构造函数中, 以便区别同名的构造函数参数和类成员变量。以便区别同名的构造函
22、数参数和类成员变量。例:例: using System; class Point int x,y; public Point(int x,int y) this.x=x; this.y=y; 运行结果运行结果(ji gu)如下:如下: class Test static void Main() Point p=new Point(5,6); Console.WriteLine(x=0,p.x); Console.WriteLine(y=0,p.y); 第二十四页,共七十六页。 6.3.2 析构函数析构函数(hnsh) 析构函数也是类的特殊的成员函数,它主要用于析构函数也是类的特殊的成员函数,它
23、主要用于释放类实例。释放类实例。 析构函数的特殊性表现在以下几个方面:析构函数的特殊性表现在以下几个方面: (1)析构函数的名字与类名相同,但它前面需要加一个)析构函数的名字与类名相同,但它前面需要加一个“”符号;符号; (2)析构函数不能带参数,也没有返回值;)析构函数不能带参数,也没有返回值; (3)当撤消对象)当撤消对象(duxing)时,自动调用析构函数;时,自动调用析构函数; (4)析构函数不能被继承,也不能被重载。)析构函数不能被继承,也不能被重载。第二十五页,共七十六页。格式格式(g shi): class 类名类名 类名类名( ) /析构函数体析构函数体 析构函数以与构造函数相
24、反的顺序被调用。析构函数以与构造函数相反的顺序被调用。第二十六页,共七十六页。例:例:using System; class Decon1 public Decon1( ) Console.WriteLine(“调用调用(dioyng)构造函数构造函数Decon1”); Decon1( ) Console.WriteLine(“调用析构函数调用析构函数Decon1”); class Decon2 public Decon2( ) Console.WriteLine(“调用构造函数调用构造函数Decon2”); Decon2( ) Console.WriteLine(“调用析构函数调用析构函数D
25、econ2”); class Test public static void Main() Decon1 dec1=new Decon1( ); Decon2 dec2=new Decon2( ); 运行结果运行结果(ji gu)如如下:下:第二十七页,共七十六页。 可以按照程序可以按照程序(chngx)代码执行的功能或其他依据把相关的语句代码执行的功能或其他依据把相关的语句组织在一起,并给它们注明相应的名称,利用这种方式把程序组织在一起,并给它们注明相应的名称,利用这种方式把程序(chngx)分块,就形成了类的方法。分块,就形成了类的方法。 方法的功能是通过方法调用实现的。方法调用指定了方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 C# 面向 对象 程序设计 76 PPT 课件
限制150内