C# 类与对象.ppt_第1页
C# 类与对象.ppt_第2页
C# 类与对象.ppt_第3页
C# 类与对象.ppt_第4页
C# 类与对象.ppt_第5页
已阅读5页,还剩24页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、类 与 对 象,MIS开发实战,类 与 对 象,在这一部分中将介绍面向对象编程的基本概念,继而介绍面向对象的基本内容,包括类与对象。本章将着重介绍类与对象的概念、类内部的数据成员与函数成员以及这些成员的访问方式。最后介绍静态类、静态成员、部分类和命名空间等。,类 与 对 象,面向对象编程的概念 面向对象编程的基本特点 类与对象 类的成员 类与命名空间 小结,面向对象编程的概念,面向对象编程的对象,即系统中用于描述客观事物的一个实体,是构成系统的一个基本单位。 面向对象编程中的类,是具有相同数据成员和函数成员的一组对象的集合,它为属于该类的全部对象提供了抽象的描述。 面向对象编程的基本内容就是把

2、数据和函数“封装”到编程所必需的“对象”中,程序由一个个能够起到子程序作用的对象(或单元)组合而成,面向对象编程的基本特点,封装:面向对象技术中的封装,简单来说就是将代码及其处理的数据绑定在一起,形成一个独立单位,对外实现完整功能,并尽可能隐藏对象的内部细节 。 继承:继承(Inheritance)也称作派生,指的是特殊类的对象自动拥有一般类的全部数据成员与函数成员(构造函数和析构函数除外)。 多态:多态性(Polymorphism)是指一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。,类与对象,类的定义,语法: class-modifiers class

3、 identifier :class-base class-body ; 注意: 工程是任何.NET Framework应用程序的基本构造块,可以简单理解 为一个EXE或DLL。 类的默认修饰符为internal。 一个类只能有一个访问修饰符,使用protected internal组合时除外。 子类的可访问性不能高于父类。,类的定义,对象的创建,语法: Role ZhangWuji = new Role();,张无忌 男 倚天屠龙记 主角 明教教主 赵敏 张翠山 殷素素,类名,对象名,对象的初始化即构造函数,新建,这个对象各成员的具体的值,类的成员,类的成员主要有数据成员和函数成员,也可以嵌

4、套其他类型(如其他类、结构、枚举等) 。,成员访问属性,类的数据成员包含字段、常量和事件。 1字段。字段用于表示与对象或类相关联的变量,包括静态字段、实例字段和只读字段。 见下例。 2常量。常量与类的关联方式和变量与类的关联方式相同。使用const关键字声明常量,如果它们声明为public,就可以在类的外部访问。见下例。 3事件。事件是类的成员,在类或对象发生某些行为(例如用户的交互操作或者改变了类的某些字段或属性)时,它可以让对象通知调用程序。客户端可以包含所谓“事件处理程序”的代码来响应该事件。,数据成员,数据成员字段例子,class Goods public double height;

5、 /实例字段 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 Goods(100, 200 ); Console.WriteLine(height =0, width=1,count= 2, y. height, y.width,

6、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 ;则编译错误。只读字段不能在这里赋值 ,数据成员常量例子,class Vehicle /定义汽车类 public const string country = China;/共有常量成员 public int wheels; /公有成员:轮子个数 protected float weight; /保护成员:重量

7、 ,函数成员,类的函数成员包括方法、属性、运算符、索引器、构造函数和析构函数。 方法。方法是表现类或对象行为的成员函数。 属性。属性用于描述对象的特征或表示对象的状态,提供对类或对象性质的访问。 运算符。运算符执行的最简单的操作,即+和- 索引器。索引器允许对象以数组或集合的方式进行索引。 构造函数和析构函数,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(

8、) TestMethod t = new TestMethod(); Console.WriteLine(The square id 0, 1, 2 , t.square(10),t.square(12.34), t.square(123.456m); ,函数成员方法例子,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 = 2

9、00; Console.WriteLine(The width of window is 0, y.Width); ,函数成员属性例子,成员访问属性,using System; class Vehicle/定义汽车类 public int wheels;/公有成员:轮子个数 protected float weight;/保护成员:重量 public void F() wheels=4; /正确,允许访问自身成员 weight=10; /正确,允许访问自身成员 ,成员访问属性,class train /定义火车类 public int num; /公有成员:车厢数目 private int p

10、assengers; /私有成员:乘客数 private float weight; /私有成员:重量 public void F() num=5; /正确,允许访问自身成员 weight=100; /正确,允许访问自身成员 Vehicle v1=new Vehicle(); V1.wheels=4; /正确,允许访问v1的公有成员 /v1.weight=6; /错误,不允许访问v1的保护成员 ,构造函数,构造函数 构造函数是特殊的成员函数,主要用于为对象分配空间,完成初始化工作。 构造函数的名称必须与类名相同。 构造函数可以带参数,但没有返回值。 构造函数在对象定义时被自动调用。 若没有为类

11、定义构造函数,则系统会生成默认的构造函数。 构造函数可以被重载,但不可以被继承。,构造函数,构造函数举例 class Car private string description; private uint wheels; public Car(string description, uint wheels) this.description = description; this.wheels = wheels; public Car(string description) this.description = description; this.wheels = 4; ,项目能力训练,创建

12、一个控制台应用程序,该程序名为ClassTest,在该程序中创建一个以ROLE为类名的、包含以下成员的一个类,并设置为公共类。 角色名、性别、出处、地位、门派地位、爱侣、父亲、母亲: 在ClassTest程序中,为Role类每一个字段成员创建属性。 在ClassTest程序中,在Role类中定义一个该类的构造函数,实现给该类的字段赋值的功能(通过属性完成)。 在ClassTest程序主函数中创建一个对象,并完成给该对象的成员赋以下的值并完成输出:张无忌、男、倚天屠龙记、主角、明教教主、赵敏、张翠山、殷素素,静态类和静态成员,静态类无需创建实例就能够访问数据和函数,当类中没有依赖对象标识的数据或

13、行为时,就可以使用静态类。静态类在加载包含该类的程序或命名空间时,由.NET Framework公共语言运行库(CLR)自动加载。,静态类和静态成员,静态类需要注意如下事项: 静态类是不能实例化的类,因而静态类类型的变量也就不能使用 new 关键字创建。 静态类不能被继承。 静态类默认继承自System.Object根类,不能显式指定任何其他基类。 静态类不能有实例构造函数,系统也不会为其提供默认构造函数,但可以包含静态构造函数。 静态类不能有任何实例成员,但可以有常量成员。 静态类不能实现任何接口, 静态类的成员不能有protected或protected internal访问修饰符。 静态

14、类的成员默认并不是static类型的,必须用static修饰符显式声明成员。,静态类和静态成员,在类中,声明为static的成员就是静态成员,不需static修饰的成员默认情况下为实例成员。静态成员通常用于表示不随对象状态而变化的数据或计算。但是,一个类成员是否为静态成员,与类本身是否静态无关。 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)

15、; ,静态类和静态成员,class TestStudent public static void Main( ) Student s1 = new Student( 12 ); s1.display( ); Student s2 = new Student( 20 ); s2.display( ); ,类与命名空间,命名空间是一种逻辑上的概念,表示范围,用于把相关的类或其他的类型组织起来。 namespace TIANLONG public class Role /角色类 /代码 sealed class Scenario/情节类 /代码 ,小结,类的成员主要有数据成员和函数成员,也可以嵌套其他类型(如其他类、结构、枚举等)。其中,类的数据成员包括字段、常量和事件,类的函数成员包括方法、属性、运算符、索引器、构造函数和析构函数。C#类的成员具有不同的访问属性,包括public、private、protected、internal。类的成员具有不同的性质,分别为静态成员和实例成员。静态类里的成员一定是静态成员,而静态成员却不一定在静态类中。部分类把类的定义分开存储在不同的物理文件中,通过命名空间,在逻辑上把C#复杂的代码有机地组织起来,二者在实际大型程序的开发中会十分有用。,项目能力训练,分别用类和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论