第2章C#语言与面向对象的编程基础.ppt
《第2章C#语言与面向对象的编程基础.ppt》由会员分享,可在线阅读,更多相关《第2章C#语言与面向对象的编程基础.ppt(74页珍藏版)》请在三一文库上搜索。
1、ASP.NET 网络应用程序开发,计算机科学系 刘彦宾,2019/8/24,2,第2章 C#语言与面向对象的编程基础,2.1 C#程序的开发 2.2 数据类型 2.3 运算符 2.4 控制语句 2.5 命名空间,2019/8/24,3,C#是微软公司专门为.NET量身订制的新一代程序开发语言,它充分吸收了过去几十年中计算机科学发展的经验教训,体现了当前最新程序设计技术的功能和精华,从C#的身上可以看到C+、Visual Basic、Dephi、Java等语言的很多优点。C#最突出的特点是:现代、简单、面向对象和类型安全。,2019/8/24,4,使用C#开发基于.NET的应用程序,具有良好的安
2、全性和跨平台性。C#用途广泛,可以开发Windows、ASP.NET、Web服务,甚至是Windows底层的各种不同类型的应用程序。C#的程序可以通过XML交换数据信息。因为XML是纯文本的信息,这就为通过C#开发的应用程序的跨平台性能提供了强大的保障。C#的程序运行方式也是独特的,其应用程序完全在.NET平台的管理下运行,这就大大地增加了应用程序的稳定性和安全性。,2019/8/24,5,2.1 C#程序的开发,C#程序的开发方式有两种:一种是使用Visual Studio.NET提供的集成开发环境IDE进行开发;另一种方式是使用文本编辑器编写程序代码,然后以.cs保存源文件,并用命令行编辑
3、器(csc)进行编译。,2019/8/24,6,简单的欢迎程序,using System; namespace ConsoleApplication1 class Program static void Main(string args) Console.WriteLine(“欢迎使用C sharp 编程!“); ,“Main”方法和语句 方法名“Main”作为保留字,是程序的起点。前面的“static“修饰符表明该方法仅仅在该特定的类中工作,而不是在该类的实例中工作。这是必需的,因为一旦程序启动后,并不存在对象的实例。,类,名称空间的声明,2019/8/24,7,在编写程序时需要注意以下几点
4、: 与C和C+相同,C#对于大小写是敏感的。 Main()是程序的入口点,每个程序都必须含有一个Main()方法。 C#用分号作为分隔符来终止每条语句。 C#程序可以含有注释。单行注释使用“/”标注,注释内容到本行结束为止。如果需要扩展到多行注释,将注释内容用“/*”和“*/”括起来即可。,2019/8/24,8,using System; namespace ConsoleApplication1 class Program static void Main(string args) Console.Write(“What is your name?: “); Console.Write(“
5、Hello,0! “, Console.ReadLine(); Console.WriteLine(“欢迎使用C sharp 编程!“); ,/Write(.)与 WriteLine(.)的区别是:Write(.)语句把信息输出到控制台,之后光标停留在同一行,而WriteLine(.)把信息输出,之后换行。,2019/8/24,9,整型 布尔型 字符型 (整型的一种特殊情况) 浮点型 小数型,简单类型(Simple types ) 结构类型(struct types) 枚举类型(Enumeration types),2.2 数据类型,C#语言的数据类型主要分为两类:值类型(Value Type
6、)和引用类型(Reference Type)。其中,值类型的变量直接存储它的数据内容,而引用类型的变量存储的是对实际数据的引用。C#的引用类型包括类类型(Class Type)、数组类型(Array Type)、接口类型(Interface Type)和委托类型(Delegate Type)。,对象类型 类类型 接口 代表元 字符串类型 数组,引用类型,值类型,2019/8/24,10,2.2.1 值类型,值类型可以分为简单类型、结构类型和枚举类型。 1简单类型 简单类型分整数类型、浮点类型、decimal类型和bool类型。,2019/8/24,11,简单类型:整型,sbyte型为有符号8位
7、整数 byte型为无符号16位整数 short型为有符号16位整数 ushort型为无符号16位整数 int型为有符号32位整数 uint型为无符号32位整数 long型为64位有符号整数 ulong型为64位无符号整数 char字符型为一个单Unicode 字符,16位长 注意:在C中,int不再取决于一个机器的字(word)的大小,而long被设成64位。,2019/8/24,12,简单类型:浮点型,float: 取值范围在 1.5x10-45 3.4x1038之间, 精度为7位数。double: 取值范围在 5.0x10-324 1.7x10308之间, 精度为 1516 位数。,201
8、9/8/24,13,简单类型:小数型,小数型是一种高精度、128位数据类型,它打算用于金融和货币的计算。 当定义一个变量并赋值给它时,使用 m 后缀以表明它是一个小数型: decimal decMyValue = 1.0m; 如果省略了m,在变量被赋值之前,它将被编译器认作double型。,2019/8/24,14,结构类型,2结构类型 结构类型是一种复合数据类型,用于将多个不同类型的成员组合为一种新的类型。结构的声明使用struct关键字。 如下所示:,2019/8/24,15,struct Student /定义结构类型Student public string id; public st
9、ring name; public int age; public string classname; public string telephone; 创建结构实例的过程和创建类实例相似,例如: Student stu = new Student(); 对结构的成员的访问使用点运算符。例如: stu.age = 20;,2019/8/24,16,在C#中,结构和类的区别在于结构是一个值类型,而类是一个引用类型。 使用结构的主要思想是用于创建小型的对象,可以节省内存,因为没有如类对象所需的那样有额外的引用产生。,2019/8/24,17,1: using System; 2: 3: struc
10、t IP 4: 5: public byte b1,b2,b3,b4; 6: 7: 8: class Test 9: 10: public static void Main() 11: 12: IP myIP=new IP; 13: myIP.b1 = 192; 14: myIP.b2 = 168; 15: myIP.b3 = 1; 16: myIP.b4 = 101; 17: Console.Write(“0.1.“,myIP.b1,myIP.b2); 18: Console.Write(“0.1“,myIP.b3,myIP.b4); 19: ,2019/8/24,18,3枚举类型 枚举类型
11、是一组逻辑上密不可分的整数值。枚举的声明使用Enum关键字。例如: enum Weekday /定义枚举类型 weekday Sunday,Monday,Tuesday,Wednesday,Thursday,Friday, Saturday 在枚举类型中,第一个枚举数的默认值为0,后面每个值依次递增1。当然,也可以使用赋值语句显式地为枚举中的常量赋值。访问枚举需要使用点运算符。,2019/8/24,19,2.2.2 类,类是面向对象编程的基本构造块,是一种包含数据成员、函数成员和嵌套类型的数据结构。类的数据成员有常量、域和事件。函数成员包括方法、属性、操作符、构造函数和析构函数。类支持继承机制
12、,通过继承、派生可以扩展类的数据成员和函数方法,进而达到代码重用和设计重用的目的。,2019/8/24,20,1. 类的定义格式为: 属性 类修饰符 class 类名 类体 其中,类修饰符包括:new、abstract、sealed、public、protected、internal、private。类体用于定义类的成员,类的成员中可以包含数据成员和函数成员。,2019/8/24,21,2. 创建类的实例 在定义了类之后,就可以通过new运算符来创建类的实例(即对象),类实例就是类类型的变量,其创建格式为: 类名 实例名即变量名=new 类名(参数); 实际上,类的实例的创建中,运算符new通
13、过调用类的构造函数完成类的初始化工作。,2019/8/24,22,3. 类的成员 类的成员分为两大类,类本身定义的成员和从基类继承来的成员。类成员包括函数成员和数据成员。可以包含可执行代码的成员统称为该类的函数成员,一个类的函数成员包括:方法、属性、事件、索引器、运算符、实例构造函数、析构函数和静态构造函数。数据成员包含类要处理的数据,它包括常数和字段。 在程序中,对类的成员的访问要使用点运算符“.”完成。,2019/8/24,23,(1) 类成员访问修饰符 类成员访问修饰符用于指定类成员的可访问性。C#共有public、private、protected和internal四个类成员访问修饰符
14、。 (2) 静态成员与实例成员 类的成员要么是静态成员,要么是实例成员。当用static修饰符定义成员时,得到静态成员,静态成员属于类,为这个类的所有实例所共享;不用static修饰符定义的成员,称为实例成员,实例成员属于类的实例。,2019/8/24,24,4. 构造函数和析构函数 构造函数是类的特殊函数成员,它主要用于为对象分配空间,完成对象的初始化工作。具有以下特点: 构造函数的名称与类的名称相同。 构造函数可以具有参数,但没有返回值。 构造函数在对象定义(即创建对象)时自动被调用。 在类中没有定义该类的构造函数时,则编译系统会自动生成一个默认的构造函数,该函数是一个不带参数、函数体为空
15、的函数。 构造函数可以重载,但不能继承。 构造函数可分为实例函数和静态构造函数。,2019/8/24,25,析构函数也是类的特殊函数成员,它的主要作用是释放类的实例,它具有以下特点: 析构函数的名字与类名相同,但其名称前加一“”符号。 析构函数不能带参数,也没有返回值。 当撤消对象时,系统自动调用析构函数。 析构函数不能被继承,也不能被重载。,2019/8/24,26,5. 类的方法 方法是表现类或对象行为的函数成员。类中方法的声明的格式如下: 属性集 方法修饰符 返回值类型 方法名(形参列表) 方法体 其中,方法的修饰符主要有:new、public、protected、internal、pr
16、ivate、static、virtual、sealed、override、abstract、extern。,2019/8/24,27,用修饰符static定义方法时,表示该方法为静态方法。未用修饰符static定义的方法为实例方法。 静态方法不对特定实例进行操作,不与实例相关联,它属于类,与类相关联,所以调用静态方法不需要创建类实例。要调用类的静态方法,只需要类名和方法名,中间加上圆点“.”运算符即可。静态方法只能访问类的静态成员,访问非静态成员是错误的。 实例方法属于类的实例,可对类的某个特定实例进行操作,调用实例方法需要通过类的实例,格式是“实例名.方法名”,实例方法可以访问类中的任何成员
17、。,2019/8/24,28,6. 字段与属性 (1) 字段 字段就是类中声明的一种数据成员,即与对象或类相关联的变量。根据在类中定义字段时所用到的修饰符的不同,可将字段分为:静态字段、实例字段、只读字段。,2019/8/24,29,静态字段:用static修饰符声明的字段称为静态字段,静态字段属于类,而不属于类的实例。 实例字段:未用static修饰符声明的字段称为实例字段,实例字段属于类的实例,即类的每个实例拥有自己的字段。 只读字段:用readonly修饰符声明的字段为只读字段,只读字段实质上是特殊的实例字段,它的特殊性表现在只读字段只能在字段声明时或在构造函数中赋值。在其他地方都不能改
18、变只读字段的值。,2019/8/24,30,(2) 属性 属性用于刻画对象的特征或表示对象的状态。属性与字段不同,它不表示存储位置。相反,属性有访问器。这些访问器指定在它们的值被读取或写入时需要执行的语句。因此,属性提供了一种机制,它把读取和写入对象的某些特性与一些操作关联起来。给属性赋值时使用set访问器,set访问器始终使用value关键字设置属性值。获取属性值时使用get访问器,get访问器通过return返回属性的值。在访问声明中,如果只有get访问器,表示是只读属性;如果只有set访问器,表示只写属性;如果既有get访问器,也有set访问器,表示读写属性。,2019/8/24,31,
19、7. 类的继承、派生和多态性 继承是面向对象的程序设计的一个重要特征,它允许在已有类的基础上创建新类,新类从已有类中继承成员,而且可以重新定义或加进新成员,从而形成类的层次或等级。一般称被继承的类为基类或父类,而称继承后产生的类为派生类或子类。,2019/8/24,32,C#中的继承有如下重要特性: 只允许单继承,即派生类只能有一个基类。 继承是可以传递的,如果类C从类B派生,而类B从类A派生,那么类C就会既继承在类B中声明的成员,又继承在类A中声明的成员。 派生类扩展它的直接基类,即派生类可以添加新的成员,但不能删除从基类继承的成员。 基类的构造函数和析构函数不能被派生类继承。 派生类可以隐
20、藏基类的成员,如果在派生类中声明了与基类同名的新成员时,基类的该成员在派生类中就不能被访问到。,2019/8/24,33,(1) 派生类的声明 类的声明格式为: 属性 类修饰符 class 类名: 基类 类体 可以看出,在派生类的声明中,通过在类名的后面加上冒号“:”和基类的名称表示继承。派生类声明中的其他部分与一般类的声明方法中的规定相同。,2019/8/24,34,(2) base关键字 在有关继承和派生的程序设计中,常用到一个关键字base,base关键字用于从派生类中访问基类的成员,它有两种基本用法: 指定创建派生类实例时应调用的基类构造函数,用于调用基类的构造函数完成对基类成员的初始
21、化工作。 在派生类中访问基类成员。,2019/8/24,35,(3) 多态性 多态性是指不同对象收到相同消息时,会产生不同动作。从而实现“一个接口,多种方法”。C#支持两种多态性。 第一种是编译时多态性,是在程序编译时就决定如何实现某一动作,它通过方法重载和运算符重载实现。编译时多态性在编译时就知道调用方法的全部信息。 第二种是运行时多态性,是在运行时动态实现某一动作,它通过继承和虚成员实现。,2019/8/24,36,对于类中的方法(函数成员),若声明时加上virtual修饰符,则称该方法为虚方法,反之称为非虚方法。virtual修饰符不能与修饰符static、abstract和overri
22、de一起使用。虚方法重载时要求方法名称、方法参数类型、方法参数、方法参数顺序、方法返回值类型都必须与基类中虚方法完全一样。在派生类中重载虚方法时,要加上override修饰符。,2019/8/24,37,8. 抽象类与密封类 (1) 抽象类 抽象类表示一种抽象的概念,用来为它的派生类提供一个公共接口。在声明类时,加上abstract修饰符时就表示声明该类为抽象类。抽象类只能作为其他类的基类,不能用该类定义对象,即不能实例化。 (2) 密封类 在声明一个类时,加上sealed修饰符时就表示声明该类为抽象类。抽象类与密封类是互斥的,因此修饰符sealed与abstract不能同时使用。密封类是不能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 语言 面向 对象 编程 基础
链接地址:https://www.31doc.com/p-3423405.html