欢迎来到天天文库
浏览记录
ID:40238906
大小:2.19 MB
页数:72页
时间:2019-07-28
《PHP应用开发与实践 马骏 第15章 面向对象》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、本章要求:第15章面向对象一切皆是对象类的声明,成员方法、成员属性的定义类的实例化访问类中成员构造方法和析构方法面向对象的封装特性面向对象的继承特性抽象类和接口面向对象的多态性面向对象的关键字面向对象的魔术方法主要内容1.一切皆是对象2.类的声明3.类的实例化4.面向对象的封装特性5.面向对象的继承特性6.抽象类和接口7.面向对象的多态性8.面向对象的关键字9.面向对象的魔术方法10.综合实例——封装一个数据库操作类第15章面向对象15.1一切皆是对象15.1.1什么是类15.1.2对象的由来15.1.3面向对象的特点
2、正所谓:“物以类聚,人以群分”。世间万物都具有其自身的属性和方法,通过这些属性和方法可以将不同物质区分开来。例如,人具有性别、体重和肤色等属性,还可以进行吃饭、睡觉、学习等活动,这些活动可以说是人具有的功能。可以把人看作程序中的一个类,那么人的性别可以比作类中的属性,吃饭可以比作类中的方法。也就是说,类是属性和方法的集合,是面向对象编程方式的核心和基础,通过类可以将零散的用于实现某项功能的代码进行有效管理。例如,创建一个数据库连接类,包括6个属性:数据库类型、服务器、用户名、密码、数据库和错误处理;包括3个方法:定义变
3、量方法、连接数据库方法和关闭数据库方法。数据库操作类的设计效果如图15-1所示。图15-1数据库连接类15.1.1什么是类类只是具备某项功能的抽象模型,实际应用中还需要对类进行实例化,这样就引入了对象的概念。对象是类进行实例化后的产物,是一个实体。仍然以人为例,“黄种人是人”这句话没有错误,但反过来说“人是黄种人”这句话一定是错误的。因为除了有黄种人,还有黑人、白人等。那么“黄种人”就是“人”这个类的一个实例对象。可以这样理解对象和类的关系:对象实际上就是“有血有肉的、能摸得到看得到的”一个类。这里实例化创建的数据库连
4、接类,调用数据库连接类中的方法,完成与数据库的连接操作。如图15-2所示。图15-2实例化对象15.1.2对象的由来面向对象编程的三个重要特点是:继承、封装和多态,它们迎合了编程中注重代码重用性、灵活性和可扩展性的需要,奠定了面向对象在编程中的地位。(1)封装性:就是将一个类的使用和实现分开,只保留有限的接口(方法)与外部联系。对于使用该类的开发人员,只要知道这个类该如何使用即可,而不用去关心这个类是如何实现的。这样做可以让开发人员更好地把精力集中起来专注别的事情,同时也避免了程序之间的相互依赖而带来的不便。例如,使用
5、电脑时,并不需要将电脑拆开了解每个部件的具体用处,用户只需按下主机箱上的Power按钮就可以启动电脑。但对于电脑内部的构造,用户可以不必了解,这就是封装的具体表现。(2)继承性:是派生类(子类)自动继承一个或多个基类(父类)中的属性与方法,并可以重写或添加新的属性或方法。继承这个特性简化了对象和类的创建,增加了代码的可重用性。假如已经定义了A类,接下来准备定义B类,而B类中有很多属性和方法与A类相同,那么就可以使B类继承于A类,这样就无须再在B类中定义A类已有的属性和方法,从而可以在很大程度上提高程序的开发效率。15.
6、1.3面向对象的特点例如,定义一个水果类,水果类具有颜色属性,然后定义一个苹果类,在定义苹果类时完全可以不定义苹果类的颜色属性,通过如图15-3所示继承关系完全可以使苹果类具有颜色属性。图15-3继承特性效果示意图(3)多态性:指同一个类的不同对象,使用同一个方法可以获得不同的结果。多态性增强了软件的灵活性和重用性。例如,定义一个火车类和一个汽车类,火车和汽车都可以移动,说明两者在这方面可以进行相同的操作,然而,火车和汽车移动的行为是截然不同的,因为火车必须在铁轨上行驶,而汽车在公路上行驶,这就是类多态性的形象比喻,如
7、图15-4所示。图15-4多态在生活中的体现15.2类的声明15.2.1类的定义15.2.2成员属性15.2.3成员方法和很多面向对象的语言一样,PHP也是通过class关键字加类名来定义类的。类的格式如下:权限修饰符是可选项,可以使用public、protected、private或者省略这3者;class是创建类的关键字;类名是所要创建类的名称,必须写在class关键字之后,在类的名称后面必须跟上一对大括号;类体是类的成员,类体必须放在类名后面的两个大括号“{”和“}”
8、之间。说明:在创建类时,在class关键字前除可以加权限修饰符外,还可以加其他关键字如static、abstract等,有关创建类使用的权限修饰符和其他关键字将在后面的内容中进行讲解。至于类名的定义,与变量名和函数名的命名规则类似,如果由多个单词组成,习惯上每个单词的首字母要大写,并且类名应该有一定的意义。例如:创建一个ConnD
此文档下载收益归作者所有