应用开发技术教学课件面向对象特性

上传人:aa****6 文档编号:57228462 上传时间:2018-10-20 格式:PPT 页数:127 大小:468.50KB
返回 下载 相关 举报
应用开发技术教学课件面向对象特性_第1页
第1页 / 共127页
应用开发技术教学课件面向对象特性_第2页
第2页 / 共127页
应用开发技术教学课件面向对象特性_第3页
第3页 / 共127页
应用开发技术教学课件面向对象特性_第4页
第4页 / 共127页
应用开发技术教学课件面向对象特性_第5页
第5页 / 共127页
点击查看更多>>
资源描述

《应用开发技术教学课件面向对象特性》由会员分享,可在线阅读,更多相关《应用开发技术教学课件面向对象特性(127页珍藏版)》请在金锄头文库上搜索。

1、第 3 章 C#的面向对象特性,计算机学院,3.1 类的定义与C#修饰符,在前一章的例子中,我们已经定义了一些简单的类,如Hello 类。 程序 3.1: Hello.cs using System; namespace mynamespaceclass myclass static void Main()Console.WriteLine(“Hello, Wellcome to C# World !“); 可以看出,一个类的实现包含两部分的内容,即类声明和类体,类的定义,计算机学院,3.1 类的定义与C#修饰符,类的定义其基本格式如下: class 类名 /类声明部分 /类体部分 类体内容

2、例如: class Book /这个类定义一本书 /类体 其中,class是关键字,用来标识类定义的开始,class关键字后面跟着用户定义的类的名称,计算机学院,3.1 类的定义与C#修饰符,类声明 类是通过关键字class来声明的,以下是类声明的两个例子: class Student public class BankCard ,“class Student”, “public class BankCard”是类声明,Student,BankCard是类的名称,通常类名的第一个字母大写,但这并不一定是必须的。,计算机学院,3.1 类的定义与C#修饰符,类体 类的定义中,类体用一对大括号括起来

3、 类体由成员变量(简称变量,又称为域)定义和成员方法(简称方法)定义两部分组成,其中变量对应类的静态属性,方法对应类的动态属性,即类的行为和操作。 通常变量在方法定义前定义(并不一定要求),计算机学院,3.1 类的定义与C#修饰符,类体 class ClassName member Varible Declarations /成员变量声明method Declarations() /成员方法声明 ,计算机学院,3.1 类的定义与C#修饰符,类体的定义见例子程序 3.2。 程序 3.2:Student.cs,using System; namespace mynamespace class St

4、udent /变量定义部分 public string s_id, s_name, s_sex; public float english, math; /方法定义部分 public void Natural(string x, string y, string z) /方法1 显示学生的基/本信息s_id = x; s_name=y; s_sex=z;Console.WriteLine(s_id+s_name+s_sex);,计算机学院,3.1 类的定义与C#修饰符,类体的定义见例子程序 3.2。 程序 3.2:Student.cs,public float Grade(float x, f

5、loat y) /方法2 计 /算学生的成绩 float sum;english = x;math = y;sum = english + math ;return sum; ,计算机学院,3.1 类的定义与C#修饰符,修饰符用于限定类以及类的成员变量和方法的声明。C#中有十余种修饰符,按功能可分为三部分:访问修饰符,类修饰符和成员修饰符。 访问修饰符访问修饰符用于控制类及其成员被访问的范围,有四种访问修饰符: public:存取不受限制; private:只有包含该成员的类可以存取; internal:只有当前工程可以存取; protected:只有包含该成员的类以及继承的类可以存取。,C#

6、修饰符,计算机学院,3.1 类的定义与C#修饰符,类修饰符类修饰符用于表示类的特殊属性,有两种类修饰符: abstract:指定一个类只能作为其它类的基类; sealed:表示一个类不能被继承。,C#修饰符,计算机学院,3.1 类的定义与C#修饰符,成员修饰符 成员修饰符用于对类成员变量或成员方法进行声明,有八种成员修饰符: abstract:表示该方法没有实现,即没有定义方法体; const:指定域或局部变量的值不能被改动,用于定义常量; event:声明一个事件; extern:指该方法在外部实现;,计算机学院,3.1 类的定义与C#修饰符,成员修饰符 override:对由基类继承成员的

7、新实现; readonly:指示一个域只能在声明时以及相同类的内部被赋值; static:指示一个成员属于类型本身,而不是属于特定的对象; virtual:指示一个方法或存取器的实现可以在继承类中被覆盖。,计算机学院,3.2 创建对象与构造方法,创建一个对象包括对象的声明、为对象分配内存空间与初始化两个步骤。 声明对象与声明基本数据类型的变量类似,首先说明新建对象所属的类名,然后说明新建对象的名字。对象声明的一般格式如下:类名 对象名;例如 Student student1;,创建对象,计算机学院,3.2 创建对象与构造方法,下面语句为声明的对象分配内存与初始化:对象名 = new 构造方法(

8、);例如:student1 = new Student();,创建对象,计算机学院,3.2 创建对象与构造方法,声明对象和分配内存空间一步完成:类名 新建对象名 = new构造方法();例如:Student student1 = new Student();注意:如果创建了一个类的多个对象,则每个对象将在内存中拥有自己的与其他对象无关的变量和方法,并由自己的方法来操纵自己的变量,这就是面向对象的封装特性的体现。,计算机学院,3.2 创建对象与构造方法,要访问或调用一个对象的变量或方法需要首先访问这个对象,然后用算符“.”连接这个对象的某个变量或方法,从而实现对变量的访问和方法的调用。例如:x

9、= student1.english;y = student1.math;student1.grade(x,y);,访问对象成员,计算机学院,3.2 创建对象与构造方法,构造方法的特殊性构造方法的方法名与类名相同,除了使用类名作为构造方法的名称外,与普通方法的声明类似。 构造方法没有返回类型。 构造方法的主要作用是完成对类的对象的初始化工作。 构造方法由系统调用来创建对象。除了可以由类的另一个构造方法或子类的构造方法调用外,不能显式地直接调用构造方法。,构造方法,计算机学院,3.2 创建对象与构造方法,构造方法的特殊性在创建一个类的新对象的同时,系统会调用该类的构造方法为新对象初始化。 例如:

10、 public class myclass public myclass() /构造方法 /初始化代码 ,构造方法,计算机学院,3.2 创建对象与构造方法,如果没有为类定义构造方法,系统将自动生成一个默认的无参数的构造方法,并使用默认值初始化对象的成员变量, 构造方法可以带有参数。例如: public class myclass public myclass(int i) /构造方法 /初始化代码 ,计算机学院,3.2 创建对象与构造方法,在对象实例化时,使用下面的语句格式: myclass mytest = new myclass(15);,计算机学院,3.2 创建对象与构造方法,构造方法可

11、以被重载。一个类中可以定义参数个数不同或参数数据类型不同的同名构造方法(与类同名)。例如:,public class myclass private string p_name;public myclass() /构造方法1,无参数p_name = “匿名“;public myclass(string str) /构造方法2,有参数p_name = str; ,计算机学院,class Point int x, y;Point() /构造方法1x=60; y=100;Point(int x, int y) /构造方法2this.x = x;this.y = y; ,3.2 创建对象与构造方法,构

12、造方法应用举例 例如,假设有一个类Point用来描述平面上的一个点,可以为Point类定义如下的构造方法,初始化它的域变量x、y:,其中构造方法2定义了两个形式参数,创建对象的语句在调用构造方法时就应该提供几个类型顺序一致的实际参数,指明新建对象各变量的初始值。利用这种机制就可以创建不同初始特性的同类对象。这里,在一个类中定义了两个同名但参数不同的构造方法,使用了方法重载的概念(关于重载以后再详细论述)。 定义了构造方法之后,就可以用如下的语句创建并初始化Point对象: Point Point1 = new Point();Point Point2 = new Point(60,90);,计

13、算机学院,3.2 创建对象与构造方法,析构方法用来当对象被使用完了或者不再需要时,释放被对象所占有的系统资源。 关于析构方法,需要说明的是:一个类只能有一个析构方法。析构方法不能被继承或重载。,析构方法,计算机学院,3.2 创建对象与构造方法,无法显式调用析构方法,它们是被自动调用的。析构方法既没有修饰,也没有参数,使用“类名”来命名。 例如: myclass() /清理代码 ,析构方法,计算机学院,3.2 创建对象与构造方法,abstract 修饰符凡是用abstract修饰符修饰的类被称为抽象类。 abstract类必须是某一类的父类,它无法直接使用 。抽象类的作用在于给所有子类提供一个统

14、一的接口。 如果属于下列情况,则该类必须被声明为abstract类。 该类中由一个或多个abstract方法(声明但没有定义的方法, abstract修饰的方法将在下节介绍); 该类继承了一个abstract类的一个或多个abstract方法,但并没有提供这些方法的方法体; 该类使用了一个接口,但并没有将该接口的所有方法加以实现。,类的修饰符,计算机学院,3.2 创建对象与构造方法,定义一个抽象类的格式如下: abstract class 类名 ,类的修饰符,计算机学院,3.2 创建对象与构造方法,sealed 修饰符 由sealed修饰的类叫密封类。如果一个类被sealed修饰符所修饰和限定

15、,说明这个类不可能有子类。 通常,两种情况下需要建立密封类:没有必要建立类的派生类(子类);类中只定义了静态变量和静态方法。,计算机学院,3.2 创建对象与构造方法,定义一个密封类的格式如下: sealed class 类名 注意:abstract和sealed修饰符不能同时修饰一个类,计算机学院,3.2 创建对象与构造方法,在一个类的定义中可以嵌套另一个类的定义。内层类被看作是外层类的一个成员,内层类的方法可以访问外层类的私有成员。当需要访问内层类时,可以使用“.”符号,类的嵌套,计算机学院,3.2 创建对象与构造方法,using System; public class Vehicles

16、private string stext = “交通工具“; /私有成员public class Autocar /嵌套类public void Run()Vehicles Av = new Vehicles();Console.WriteLine(Av.stext);Console.WriteLine(“car run very fast“);,类的嵌套,计算机学院,3.2 创建对象与构造方法,static void Main()Autocar acar= new Autocar();acar.Run(); /当需要在Vehicles类之外访问内层类时,则使用下面的语句: class test static void Main()Vehicles.Autocar acar= new Vehicles.Autocar();acar.Run(); ,

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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