类是属性和方法的集合,对象是类进行实例化后的产物,是一个实体。
面向对象三大特点:①封装性:封装性也称为信息隐藏,就是将一个类的使用和实现分开,只保留有限的接口(方法)与外部联系。②继承性:继承性就是派生类(子类)自动继承一个或多个基类(父类)中的属性与方法,并可以重写或添加新的属性或方法。③多态性:多态性是指同一个类的不同对象,使用同一个方法可以获得不同的结果,这种技术称为多态性。
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对象的抽象就是类。
类描述了一组有相同特性(属性)和相同行为(方法)的对象。在开发时,要先抽象类再用该类去创建对象,而在我们的程序中直接使用的是对象而不是类。
在面向对象的编程语言中,类是一个独立的程序单位,具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括成员属性和服务的方法两个主要部分。
在客观世界里,所有的事物都是由对象和对象之间的联系组成的。对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,一个对象是一组属性和有权对这些属性进行操作的一组服务的封装体。
*上面介绍的就是类和对象的定义,也许你是刚接触面向对象的读者,不要被概念的东西搞晕了,我们通过举例来理解一些这些概念吧。一个类最为突出的特性,或区别于其他类的是你能向它提出什么样的请求,它能为你完成哪些操作。例如,你去中关村电子城想买几台组装的PC机,你首先要做的事是什么?是装机的工程师和你坐在一起,按你的需求和你一起完成一个装机的配置单。可以把这个配置单看做是一个类,也可以说是自定义的一个类型,它记录了你要买的PC机的类型,如果按这个配置单组装10台PC出来,这10台机子就可以说是同一个类型的,也可以 说是一类的。
那么 什么是对象呢?类的实例化结果就是对象,按PC的配置单组装出来(实例化出来)的PC机就是对象,是我们可以操作的实体。组装10台PC机,就创建了10个对象,每台PC机都是独立的,只能说明他们是按同一类型配置的,对其中一个PC机做任何动作都不会影响其它9台机器。 但是如果对类进行修改,也就是在这个PC的配置单上加一个或少一个配件,那么组装出来的10个机子都被改变。
通过上面的介绍也许你理解了类和对象之间的关系。类其实就像我们现实世界将事物分类一样,有车类,所有的车都归属于这个类,例如奔驰车、宝马车都属于车类中的一种;有人类,所有的人都归属这个类,例如中国人、美国人、工人、学生等都属于人类中的一种;有球类 ,所有的球都归属这个类,例如蓝球、足球、排球等。在程序设计中也需要将一些相关的变量和函数的声明归类,形成一个自定义的类型。通过这个类型可以创建多个实体,一个实体就是一个对象,每个对象都具有该类中定义的内容特性。*
*面向对象的程序设计:
在PHP中,可以采用面向过程方式的模块化编程,也可以采用面向对象的程序设计模式,还可以是面向对象和面向过程混合编程。在PHP4中的面 向对象功能很不完善,所以程序设计人员几乎采用的都是过程化的模块编程,程序的基本单位就是由函数组成的。而PHP5版本的发布,标志着 一个全新的PHP时代的到来,它的最大特点就是引入了面向对象的全部机制,并且保留了向下的兼容性。开发人员不必再编写缺乏功能性的类,并且能够以多种方式实现类的保护。程序设计人员在设计程序时,就可用以对象为程序的基本单位。
在面向对象的程序设计中,初学者比较难理解的并不是面向对象程序设计中用到的基本语法,而是如何使用面向对象的模式思想去设计程序。例如,一个项目要用到多个个类?定义什么样的类?每个类在什么时候去创建对象?哪里能用到对象?对象和对象之间的关系,以及对象之间如果传递信息等。
假设有这样一个项目,某大学需要建立5个多媒体教室,每个教室可以供50名学生使用。如果把这个项目交给你来完成,你该怎么做?是不是首先需要5个房间,每个房间里面摆放50张电脑桌和50把椅子,然后需要购买50台电脑、一个白板和一个投影机等。这些是什么?能看到的这 些实体就是对象,也可以说是这些多媒体教室的组成单位。多媒体教室需要的东西都知道了,怎么去准备呢?就要对所有需要的东西进行分类, 可以分成房间类、桌子类、椅子类、电脑类、白板类和投影机类等。然后定义每个类别的详细信息,例如,房间类里面需要定义它的面积、桌 子数量、电脑数量、和椅子数量等,按这个房间类的设计就可以建立5个房间对象作为教室。桌子类需要定义它的长、宽、高以及颜色,那么通 过桌子类生产的所有桌子都是一样的类型。做一个电脑类,列出需要的电脑详细配置,这样购买的电脑就都属于这个类型的了。以此类推,每 个对象都可以这样准备。再把这些创建完成的对象都放到各自的教室中,再由学生对象的使用就可以将多个对象关联到一起了。
开发一个面向对象的系统程序和创建一个多媒体教室类似,都是把每个独立的功能模块抽象成类并实例化成对象,再由多个对象组成这个系统。这些对象之间都能够接收信息、处理数据和向其他对象发送信息等相互作用,就构成了面向对象的程序。*
对象还可以通过封装保护对象中的成员,通过继承对类进行扩展,还可以使用多态机制编写“一个接口,多种实现”的方式。