一、面向对象
1、类与对象
1)对象的理解
所有的编程语言都提供一套自己的抽象机制。例如对于C语言而言,以面向过程为特点,以事件作为编程的核心。而Java语言不同,Java语言是一种纯面向对象的语言。
举个例子:对于车子发动,车子刹车这两个操作。
面向过程语言:这是两个事件,车子发动,是一个事件,车子刹车是一个事件。对于这两个事件,需要创建两个函数,按照顺序进行调用。
面向对象语言:我们更加关注汽车这个对象,这两项操作发动和刹车是汽车的两项功能,其发生的先后顺序不关心。
因此,对于上面这个车子对象而言,发动和启动是汽车具有的两个行为。与此同时,汽车还具有型号、颜色、价格等参数,这类参数被称为对象的属性。因此,对象是一个独立的实体,它仅包含属性和行为,不包含其他的任何东西。而具有相同特征的一类对象的集合就被称为“类”。比如家用小汽车,公交车,摩托车,自行车等都相似的功能,这一系列的对象可以抽象成一个类“车子”。
2)父对象和子对象
继续上面这个例子,对于车子这个对象而言,有不同类型的车,比如家用小汽车,公交车,摩托车,自行车等。这些车子都属于车子。这些不同类别的车子都具有发动的功能,但是对于每个具体的车子而言,其发动的方式表现出一定的差异性。比如自行车需要脚动发动,而小汽车是通过踩离合器,油门发动(此处让我想起驾考的恐惧感),摩托车则是旋转手把来加油启动。因此,所有不同类型的车子都具有发动的功能,但是发动的方式却千差万别。此外,某些对象会具有一些独特的特征,比如比如。。。emmm。。。自行车推着和自己女朋友并排慢慢走(这个功能真的想破了我的头)。
因此,这里车子被称为父对象(父类),而小汽车,公交车,摩托车等被称为子对象(子类)。子对象一定具有父对象具有的属性和方法,但是父对象却不一定具有子对象的某些功能。这在之后会提到,这是一种继承的关系。父对象用作派生更加复杂的子对象的结构基础,子对象看起来类似父对象,但更加特殊化。在面向对象编程中,可以重用父对象的通用属性和行为,也可以向子对象添加不同的属性和行为。
3)对象之间通信
对象之间可以通过发送消息(方法调用)与其他对象进行通信,比如在对象A的方法体中调用B的对象,以得到B某项操作结果等。这样就实现了对象A和对象B的通信。