Visual C#程序设计应用教程 教学课件 ppt 作者 郭力子 1_ 第5章面向对象编程基础

上传人:E**** 文档编号:89184082 上传时间:2019-05-20 格式:PPT 页数:36 大小:252KB
返回 下载 相关 举报
Visual C#程序设计应用教程 教学课件 ppt 作者 郭力子 1_ 第5章面向对象编程基础_第1页
第1页 / 共36页
Visual C#程序设计应用教程 教学课件 ppt 作者 郭力子 1_ 第5章面向对象编程基础_第2页
第2页 / 共36页
Visual C#程序设计应用教程 教学课件 ppt 作者 郭力子 1_ 第5章面向对象编程基础_第3页
第3页 / 共36页
Visual C#程序设计应用教程 教学课件 ppt 作者 郭力子 1_ 第5章面向对象编程基础_第4页
第4页 / 共36页
Visual C#程序设计应用教程 教学课件 ppt 作者 郭力子 1_ 第5章面向对象编程基础_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《Visual C#程序设计应用教程 教学课件 ppt 作者 郭力子 1_ 第5章面向对象编程基础》由会员分享,可在线阅读,更多相关《Visual C#程序设计应用教程 教学课件 ppt 作者 郭力子 1_ 第5章面向对象编程基础(36页珍藏版)》请在金锄头文库上搜索。

1、VISUAL C# 程序设计应用教程,第5章面向对象编程基础, 面向对象程序设计的基本概念 类和类的成员 类的继承、方法和接口,本章要点,第5章 面向对象编程基础,5. 1 面向对象程序设计概述 5. 2 类和对象 5. 3 字段、属性和索引器 5. 4 方法 5. 5 抽象类与接口 5. 6 委托,5.1 面向对象程序设计概述,面向对象程序设计(Obiect-Oriented Programming),简称OOP OOP技术按照人们的思维习惯,模拟现实世界的环境,将数据和对数据的操作作为一个相互依赖、不可分割的整体;采用数据抽象和信息隐藏技术,使得复杂的编程工作条理清晰、编写容易;更加有利于

2、软件的开发、维护和升级。 OOP技术的主要概念有 : 抽象 继承 封装 多态性,通常把具有相同性质和功能的事物所构成的集合体叫做类。 类是面向对象的程序设计的基本构成模块。 5.2.1 类的声明 5.2.2 对象和类的实例化 5.2.3 类的成员 5.2.4 类成员的访问 5.2.5 构造函数与析构函数 5.2.6 类的多态,5.2 类和对象,5.2.1 类的声明,类的声明使用class关键字, class关键字前可以加上类的属性集或者修饰符。 类的声明格式: 类的属性集 类的修饰符 关键字 class 类名 :基类名和接口列表 类的成员; ,类是一种抽象的数据类型。而对象就是一个类的具体实例

3、 对象是一个引用类型的变量。它的创建格式如下: 类名 对象名 = new 类名(参数); 创建对象后,可通过对象访问类中的数据和函数,使用方法: 对象名.成员函数名 或 对象名.数据 例: class animal public string color; class cat void Method( ) animal MyPet=new animal( ); MyPet.color=“white“; ,5.2.2 对象和类的实例化,5.2.3 类的成员,类包含有数据成员、函数成员或其他的嵌套类型等。 函数成员:方法、属性、事件、索引器、操作符、实例构造函数、析构函数和静态构造函数等。 它们一

4、般包含可执行代码,执行时完成一定的操作 数据成员:类要处理的数据,被称为类的字段,字段包括常数和变量。,5.2.4 类成员的访问,1.访问修饰符 类的成员的访问,使用访问修饰符。定义类的成员的不同访问权限:公有的(public)、私有的(private)、保护的 (protected)、内部的(internal)等,2. 静态成员和实例成员 类的成员有两种类型: 静态成员,用static修饰符声明的成员是静态成员,静态成员属于类所有,能够为这个类的所有实例所共享,使用时不需将类实例化就可访问; 实例成员,不用static修饰符声明的成员,则为实例成员,实例成员属于类的实例。 在同一个命名空间内

5、访问静态成员的语法是: 类名.静态成员名,5.2.5 构造函数和析构函数,1.构造函数和析构函数 构造函数的名字与类名相同。每当用new生成类的对象时,自动调用类的构造函数。因此,可以把初始化的工作放到构造函数中完成。构造函数是类的特殊的成员,它用于创建类的实例时为对象分配空间,完成初始化工作。 构造函数不能有返回值。可以有零个或多个参数。 类的对象被撤销时,将自动调用析构函数。一些善后工作可放在析构函数中完成。析构函数的名字为类名前面加一个“”符号,无返回类型,也无参数。 构造函数和析构函数的执行是无条件的,在声明一个对象或销毁一个对象时,如果没有声明相应的构造函数和析构函数,系统会自动为之

6、产生,并在创建对象时调用构造函数,而在销毁对象时调用析构函数,例:下面代码给出了Point类的构造函数。 class Point int x,y ; public Point(int x,int y) this.x=x; this.y=y; 2. this关键字 上列代码中的this关键字是用来代表对象自身,也就是说,如果用上面的构造函数去构建了一个目标对象,则this便可以用来代表所构建的对象。this用在构造函数中时,便于区别同名的构造函数参数和类成员变量。,5.2.6 类的继承,继承允许在已有类的基础上创建新类,新类从已有类中继承类成员,而且可以重新定义或增加新的成员,从而形成类的层次或

7、等级。 被继承的类称为基类或父类,继承后产生的类称为派生类或子类。C#中的继承符合下列原则: 继承是可以传递的。如果C从B中派生,B又从A派生,那么C不仅继承了B的成员,同样也继承了A中的成员。 Object是所有类的基类。 构造函数和析构函数不能被继承。 派生类如果定义了与继承而来的成员同名的新成员,就可以覆盖已继承的成员。 类继承的基本语法: 修饰符class子类名:基类名 类体 ,类的继承示例: class A 类体A class B:A 类体B 上述代码中,类B继承于类A,类A称作父类(也叫基类),类B称作子类(也叫派生类)。C#中,子类只能有一个父类。子类从基类中继承除了构造函数和析

8、构函数以外的所有成员,如函数、字段、属性、事件和索引器等。,5.2.7 类的多态,多态是面向对象编程思想的核心之一。 多态的意思是指:当从父类派生了一些子类后,每个子类都由不同的代码实现。因此,在程序运行时,当同一个操作作用于不同的类的实例时,面向对象的语言会自动判断对象的派生类型,并调用相应的方法,最后产生不同的执行结果。 使用多态,能实现程序通用性,提高代码的重用率。,通常把具有相同性质和功能的事物所构成的集合体叫做类。 类是面向对象的程序设计的基本构成模块。 5.3.1 字段 5.3.2 属性 5.3.3 索引器,5.3 字段、属性和索引器,5.3.1 字段,字段:与对象或类相关联的变量

9、。 字段包括静态字段、实例字段和只读字段。字段的声明与标准的变量命名相同,声明格式: 访问修饰符 类型标识符 字段变量名; 下面的代码中,类A中包含了3个字段:公有的整型字段i,公有的只读字符串型字段s,私有的浮点型字段f: class A public int i; /整型字段 public readonly string s=“I like C#.“; /只读字符串型字段 private float f; /浮点型字段 ,5.3.2 属性,属性:用于刻画对象的特征或表示对象的状态,提供对类或对象性质的访问,譬如窗口的标题、背景颜色、字符串的长度、字体名称等。 属性体现了对象的封装性:不直接

10、操作类的数据内容,而是通过访问器进行访问。 属性在类模块内通过以下方式声明: 访问修饰符 属性类型 属性名称 访问器; ,set访问器:给属性赋值时使用,set访问器始终使用隐含的参数value设置属性的值。获取属性值时使用get访问器。 get访问器:通过return返回属性的值。如果只有get访问器,表示是只读属性;如果只有set访问器,表示只写属性;如果既有get也有set访问器,表示读写属性。 例:简单表达类A中的属性myProperties的声明: class A private int i; public int myProperties get /get访问器 return i;

11、 set /set访问器 i=value; ,5.3.3 索引器,索引器(indexer):也称下标指示器。使用索引器,可以像访问数组的方式访问类或结构的对象 索引器的声明格式: class 类名 修饰符 类型 this 索引参数表 get 代码 set 代码 ,索引器的定义与属性的定义很相似。不同点: (1) 索引器有索引参数值; (2) 使用索引器时,由于类本身被当做数组使用,索引器没有自己专有的标识符,而是使用关键字this当做自己的名称。,通常把具有相同性质和功能的事物所构成的集合体叫做类。 类是面向对象的程序设计的基本构成模块。 5.4.1 方法的声明 5.4.2 方法的调用 5.4

12、.3 静态方法 5.4.3 方法的重载 5.4.3 方法的覆盖 5.4.3 使用base访问,5.4 方法,方法:指在类的内部定义的,并且可以在类或类的实例上运行的函数。因此,方法也称成员函数。 方法的声明格式: 方法修饰符 返回类型 方法名( 形式参数表 ) 方法体 ,5.4.1 方法的声明,5.4.2 方法的调用,方法主要分为两类。 静态方法,调用形式为: 类名.静态方法名(参数列表) 实例方法,调用的一般形式为: 实例名=new类名( 构造函数参数表 ); 实例名.方法名(实参表); 如果是在同一个类的内部调用方法,则不需要指定对象名,形式为: 方法名(实参表);,5.4.3 静态方法,

13、静态方法:用static修饰符声明的方法。 静态方法不对特定实例进行操作,不与实例相关联,它属于类。 调用静态方法不需要创建类实例。 静态方法只能访问类中的静态成员,如用于访问非静态成员时将发生错误。 实例方法:与静态方法不同,实例方法对类的某个给定的实例进行操作,而且可以采用关键字this来访问该实例, 属于实例(对象)。 实例方法可以访问类中的任何成员。,方法重载(overload): 指调用同一方法名,但各方法中参数的数据类型、个数或顺序不同。只要类中有两个以上的同名方法,但是使用的参数类型、个数或顺序不同,调用时,编译器就会自动判断在哪种情况下调用哪种方法,5.4.4 方法的重载,方法

14、的覆盖(override)是指派生类覆盖基类的同名方法(也称作为重写),实现覆盖的两种方式: (1) 在派生类要覆盖的方法前面加 new 修饰,而基类不需要作任何改动。这种方法的缺点是不能实现多态。 (2) 在派生类要覆盖的方法前面加 override 修饰,而基类的同名方法前面加 virtual修饰。这样就能实现多态。如方法的修饰符中含有virtual时,这种方法也被称作虚方法。,5.4.5 方法的覆盖,5.4.6 使用base访问,base访问:使用base关键字从派生类中访问基类成员,它有两种基本用法: (1) 在定义派生类的构造函数中,指明要调用的基类的构造函数,由于基类可能有多个构造

15、函数,根据base后的参数类型和个数,指明要调用某一个基类构造函数。 (2) 在派生类的方法中调用基类中被派生类覆盖的方法。,5.5.1 抽象类 5.5.2 接口,5.5 抽象类与接口,5.5.1 抽象类,抽象类:在声明基类时,有时候只打算给出派生类的一般化形式,而后让派生类去实现具体内容。这种类只定义了方法的框架,而没有提供这些方法的具体实现。 使用抽象类时,有以下规定: 抽象类只可以作为其他类的基类,它不能直接被实例化,而且抽象类不能使用 new操作符。如果抽象类中含有抽象的变量或值,则它们要么是null类型,要么包含了对非抽象类的实例的引用。 抽象类可以包含抽象成员。 抽象类定义抽象方法

16、时,应将关键字abstract添加到方法的返回类型的前面。 抽象方法没有实现,方法定义后面是分号,而不是常规的方法块。抽象类的派生类必须实现所有抽象方法。 例如: public abstract class A public abstract void DoWork (int i); ,5.5.2 接口,接口声明:一种类型声明。 与类一样,接口也定义了一系列方法、属性、索引和事件。 与类不同的是,接口并不提供实现。它只表示一种约定,实现接口的类必须遵守该接口定义的约定。 一个接口可以从多个基接口继承,而一个类可以实现多个接口。 接口的声明方法: 接口修饰符 interface接口名 : 基接口 接口体 ,5.6 委托,委托(delegate):允许将一个对象中的方法传递给另一个能调用该方法的类的某个

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号