“有对象吗?没有! new 一个。”当第一次接触面向程序设计语言Java时,大家都会拿这句话作为调侃,但是,作为一个大三的学生,如果还是对“对象”有着浅层次的理解,确实有点说不过去啦!
1、什么是对象?
什么是对象?作为一个二十多岁的年轻人,乍一看,这还用说,当然就是结婚的对象啦。当然可以这样理解,但是世界这么大,我也想去看看万物世界,在看世界的过程中,我们在现实中能看到的每一个能叫出来名字的都可以被理解为对象,有些对象是抽象的,比如一场球赛,一场音乐会。有些是具体的,比如张三、李四、小花狗。
1.1 现实世界中的含义:
在现实世界中,任何事物都是对象。 它可以是一个有形的具体存在的事物,例如一张板凳,一台电脑,一个学生,一辆汽车,也可以是无形的,抽象的事物,例如一次演出,一场球赛等等,对象可以是简单的,也可以是复杂的。
现实世界中的对象既具有静态的属性(或称之为状态),又具有动态的行为(或称操作,功能)。 静态属性指的是“是什么”,动态属性指的是“做什么”。 比如:潘小蓝的博客名称是潘小蓝,性别是男,年龄18岁,这些被称之为静态属性。潘小蓝看博客,写博客,或者正在看博客的你点击鼠标点赞收藏这些需要做的事情被称之为动态属性。
有静态属性+动态属性的事物我们称之为对象。所以在现实世界中,对象一般可以表示为 属性 + 行为。一个对象往往是由一组属性和一组行为构成的。
现实世界中的对象,具有以下特性:
- 每一个对象必须有一个名字以区别于其他对象。
- 用属性来描述对象的某些特征。
- 有一组操作,每组操作决定对象的一个行为。
- 对象的行为可以分为两类,一类是作用于自身的行为(例如我们在Java中的setXxx(),getXxx()方法,一种是作用于其他对象的行为。
1.2 程序设计中的含义:
程序设计中的对象是现实世界的另一种呈现。在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
在C++中,每个对象都是由数据和操作代码(通常用函数实现)组成的,数据就是上文提到的属性,操作代码是上文提到的动态行为。
例如:一个学生就是一个对象,学号、姓名和成绩等数据就是它的属性,输入或输出姓名、学号、成绩等操作就是前面提到的行为。
2、什么是类?
如果说对象是我们常说的女朋友,那么类就是女朋友的生产者和制造者。如果将多个女朋友的共同特征抽象出来,比如都是女生,都是18岁这些共有的属性,或者共有的行为操作,比如爱生气,爱撒娇。将这些共有的属性和行为抽象出来,抽象出来的就是一个类。 如果下次还像找类似的女朋友,那么就可以直接通过类实例化一个对象,共同压马路啦。类是对象的抽象,而对象是类的实例。
两者之间的关系:
类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,对象又是类的个体实物,一个对象是类的一个实例。 例如 : 虽然张三、李四、王五、潘小蓝,每个人的性格、爱好、职业、特长等各有不同,但是基本特征是相似的,都具有相同的生理构造,都能吃饭、说话、走路等,于是把他们统称为“人”类,而具体的每一个人是人类的一个实例,也就是一个对象。
在面向对象程序设计中,总是先声明类,再由类生成其对象。 类是建立对象的“模板”,按照这个模板所建立的一个个具体的对象,就是类的实际例子,通常成为实例。(就是我们通常所说的实例化,每个对象就是类的一个实际的例子)。举个例子就是,在手工制作月饼的时候,先雕刻一个有凹下图案的木模,然后在木模上抹油,接着将事先揉好的面塞进木模里,用力挤压后,将木模反扣在桌上,一个漂亮地 图案就会出现在月饼上了。这样一个接着一个地,就可以制造出外形一模一样的月饼。这个木模就好比是"类",制造出来的糕点就是所说的“对象”。
在C++语言中,把类中数据称之为数据成员,类中的操作是用函数来实现的,这些函数成为成员函数。