1、 什么是对象?
对象就是OOP程序的一个组成部件,这个组成部件封装了部分应用程序,这部分程序可以是一个过程、一些数据或一些更抽象的实体。
简单的说,对象类似于结构类型,包含变量成员和函数类型。它所包含的变量组成了存储在对象中的数据,其中包含的函数可以访问对象的功能。
C#中的对象是从类型中创建的,对象的类型在OOP中有一个特殊的名称:类。可以使用类定义实例化对象,这表示创建该类的一个实例。“类的实例”和对象表示相同的含义,注意“类”和“对象”是完全不同的东西。
1) 属性和字段
属性和字段可以访问对象中包含的数据。这个对象数据是区分不同的对象,因为同一个类的不同对象可能在属性和字段中存储了不同的值。
2) 方法
表示对象中的函数,其调用方式与其他函数相同,使用返回值和参数的方式也相同。
例子:
下面介绍一个术语。包含在对象中的不同数据统称为对象的状态。
在现实生活中,电脑就是我们搜寻资料的一个对象,他具有外观、操作系统、价格等等特点,这在对象概念中被称为属性,而利用这个电脑玩游戏、看电影、查找资料等用途,这就对应于对象里的方法,另外,主板、CPU、显卡、键盘等等组件,我们可以称作对象的集合。
2.对象的生命周期
每个对象都有一个明确的生命周期,即从使用类定义开始一直到删除它为止。在对象的生命周期里,除了“正在使用”的正常状态之外,还有两个重要阶段:
- 构造阶段:对象最初进行实例化的时期。这个初始化过程称为构造阶段,有构造函数完成。
- 析构阶段:在删除一个对象时,常常需要执行一些清理工作,例如释放内存,由析构函数完成。
3.接口
接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一旦定义了接口,就可以在类中执行它。这样,类就可以支持接口所指定的所有属性和成员。
注意:接口不能单独存在。不能像实例化一个类那样实例化接口。另外,接口不能包含执行其他成员的任何代码,而只能定义成员本身。执行的过程必须在执行接口的类中实现。
一个类可以支持多个接口,多个类也可以支持相同的接口。所有接口的概念让用户和其他开发人员更容易理解其他人的代码。
例如:有一些代码使用了一个带某接口的对象。假定不使用这个对象的其他属性和方法,就可以用另一个对象代替这个对象。
4、继承
继承是OOP技术的一个重要特性之一,任何类都可以从另一个类继承,这个类拥有他继承的类的所有成员。在OOP中,被继承的类称为基类。
在继承一个基类时,成员的可访问性就成为一个重要的问题。派生类不能访问基类的私有成员,但可以访问其公共成员。不过派生类和外部代码都可以访问公共成员。这就是说,只使用这两个可访问性,不仅可以让一个成员被基类和派生类访问,而且也能够被外部的代码访问。
为了解决这个问题,C#提供了第三种可访问性:protected,只有派生类才能访问一个protected成员。考虑到外部代码,这个访问性和私有成员一样,基类和外部代码都不能访问。
基类可以定义为抽象类。抽象类不能直接实例化。要使用抽象类,必须继承这个类,抽象类可以有抽象成员,这些成员在基类中没有这些代码,所以这些执行代码必须在派生类中提供。
5、事件
事件是可以被控件识别的操作,如按下确定按钮,选择某个单选按钮或者复选框。每一种控件有自己可以识别的事件,如窗体的加载、单击、双击等事件,编辑框(文本框)的文本改变事件,等等。
事件有系统事件和用户事件。系统事件由系统激发,如时间每隔24小时,银行储户的存款日期增加一天。用户事件由用户激发,如用户点击按钮,在文本框中显示特定的文本。事件驱动控件执行某项功能。
触发事件的对象称为事件发送者;接收事件的对象称为事件接收者。
事件就是用户对窗口上各种组件的操作。
使用事件机制可以实现:当类对象的某个状态发生变化时,系统将会通过某种途径调用类中的有关处理这个事件的方法或者触发控件事件的对象就会调用该控件所有已注册的事件处理程序等。
在.net框架中,事件是将事件发送者(触发事件的对象)与事件接受者(处理事件的方法)相关联的一种代理类,即事件机制是通过代理类来实现的。当一个事件被触发时,由该事件的代理来通知(调用)处理该事件的相应方法。
C#中事件机制的工作过程如下:
(1)将实际应用中需通过事件机制解决的问题对象注册到相应的事件处理程序上,表示今后当该对象的状态发生变化时,该对象有权使用它注册的事件处理程序。
(2)当事件发生时,触发事件的对象就会调用该对象所有已注册的事件处理程序。