明白了,你的意思是我们把汽车当成一个软件产品,引擎就是其中一个对象?而整个汽车上就由N多的对象组成。
其实你这话说对也可以说不对,我们认为对象是人们要进行研究的任何事物,不仅是前面说到的从最简单的整数和宇宙飞船等具体的事物可看作对象,还包括哪些抽象的规则、计划或事件。比如一张请假条,一个工资调整计划,一次会议记录等。
对象是OOP应用程序的一个部件。它封装了这个应用程序的部分功能,而它可以是一条数据,一个数值或者一些更加抽象的实体。总之,在C#中,我们可以认为一切都是对象。
对象的生命周期
明白了,那前面说的生命周期是什么?
在现实中,一辆汽车从生产出来到被报废就是一个生命周期。
而在软件中任何一个对象也会经历两个阶段:
构造阶段:对象最初进行实例化的阶段,这个任务由类的构造函数(8.4.3)完成。
析构阶段:对象使用完毕,如清理资源,释放内存等,这个工作由析构函数(8.4.3)来完成,如果我们没有手动执行析构函数,当系统检测到实例对象的引用没有指向任何实际对象的时候,系统会自己进行GC(垃圾回收)。
对象与类
我知道什么是对象了,接下来,对象和类之间又是什么关系呢?
这个问题问得非常好,很多学员在学了很久了还不清楚类和对象之间的关系,简单说,我们把一大类对象的共性抽取出来定义出一个类。在编程过程中我们说对象的抽象就是类,类的实例就是对象。还是打个比方:
不同型号的轿车,他们都是汽车,都有轮子,引擎,车灯等,于是我们抽象出一个汽车类,而用这个汽车类分别实例出四种汽车,当然还可以更多,如图4-2
图4-2
我明白了,上图中 Auto就是一个类定义,而围绕它的这四个稀奇古怪的车就是这个类的一个实例对象,可是为什么这些实例对象上看不见方法呢?
晕,看来还得跟你说下什么是属性,什么是方法。一个事物(对象)的特征对应类中的就是类的属性;而对象的操作用于改变自身的状态,对象及其操作就是对象的行为,到类里面就是方法,用操作名和实现该操作的方法来描述。比如图4-2中,在类中,我们可以看到类中的全部方法和属性,但是在实例中却只能看到属性。你想下,属性本身就是表示对象哪些可以看见并且描述的特征。而方法就是对象的动作,动作当然就不好用看的啦。
针对这个问题,我建议你配合图4-1和图4-2两张图一起来看。
下面我们继续把面向对象的特征给你介绍下,后面我们就用大量的实例来讲解。
面向对象的特征
(1) 对象唯一性。
每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。
(2) 分类性。
分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
(3) 继承性、多态和重载是三大主要特性,我们后面细讲。
本文为天轰穿原创文章,转载请注明出处及作者。