版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,重庆工程职业技术学院,汪应,PHP基础开发,第12章 面向对象基础,01 面向对象的基本概念,02 类的声明,03 类的实例化,04 面向对象的封装,05 面向对象的继承,06 static关键字,07 抽象类和接口,08 面向对象实现多态,09 面向对象的其他关键字,10 面向对象的常用魔术方法,1 面向对象的基本概念,主要内容,类,对象,面向对象的特点,01,02,03,类,类是属性和方法的集合,是面向对象编程方式的核心和基础,通过类可以将零散的用于实现某项功能的代码进行有效管理。,对象,实例化创建的数据库连接类,调用数据库连接类中的方法,完成与数据库的连接操作。,面向对象的特点,(1)
2、封装性:就是将一个类的使用和实现分开,只保留有限的接口(方法)与外部联系。 (2)继承性:是派生类(子类)自动继承一个或多个基类(父类)中的属性与方法,并可以重写或添加新的属性或方法。继承这个特性简化了对象和类的创建,增加了代码的可重用性。 (3)多态性:是指同一个类的不同对象,使用同一个方法可以获得不同的结果。多态性增强了软件的灵活性和重用性。,2 类的声明,主要内容,定义类,成员属性,01,02,成员常量,成员方法,03,04,在PHP中,使用关键字class加类名的方式定义类,然后用大括号包裹类体,在类体中定义类的属性和方法。,定义类,权限修饰符 class 类名 类体; ,语法,定义C
3、onnDB类,成员属性,在类中直接声明的变量称为成员属性。成员属性的声明必须用关键字来修饰,例如,public、protected、private等。,class ConnDB var $dbtype; var $host; var $user; var $pwd; var $dbname; var $debug; var $conn; ,成员常量,在类中定义常量使用关键字const。,const PI= 3.14159;,常量的输出不需要实例化对象,直接由类名+常量名调用即可。,类名:常量名,格式,成员方法,在类中声明的函数称为成员方法。,class ConnDB function Conn
4、DB() / 方法体 function GetConnId() / 方法体 function CloseConnId() $this-conn-Disconnect(); ,3 类的实例化,主要内容,对象的创建,访问类中的成员,“$this”和“:”操作符,01,02,03,构造方法和析构方法,04,对象的创建,$变量名=new 类名称(参数);,语法,PHP中使用关键字new来创建一个对象。一个类可以实例化多个对象,每个对象都是独立的。,$connobj1=new ConnDB(); $connobj2=new ConnDB(); $connobj3=new ConnDB();,访问类中的成
5、员,$变量名=new 类名称(参数); $变量名-成员属性=值; $变量名-成员属性; $变量名-成员方法;,语法,使用特殊的运算符号“-”访问类中的成员。,“$this”和“:”操作符,使用$this变量可以引用该对象的其他方法和属性,并使用“-”作为连接符。,“$this”操作符,$this-属性名; $this-方法名;,“$this”和“:”操作符,操作符“:”可以在没有声明任何实例的情况下访问类中的成员。,“:”操作符,关键字:变量名/常量名/方法名,语法,这里的关键字分为三种情况: parent关键字:可以调用父类中的成员变量、成员方法和常量。 self关键字:可以调用当前类中的静
6、态成员和常量。 类名:可以调用本类中的变量、常量和方法。,构造方法和析构方法,构造方法,function _construct(mixed args ,) /方法体 ,语法,构造方法和析构方法,析构方法,function _destruct() / 方法体,通常是完成一些在对象销毁前的清理任务 ,语法,4 面向对象的封装,主要内容,公共成员关键字public,私有成员关键字private,保护成员关键字protected,01,02,03,公共成员关键字public,公共成员就是可以公开的、没有必要隐藏的数据信息。可以在程序的任何地点(类内、类外)被其他的类和对象调用。子类可以继承和使用父类中
7、所有的公共成员。对于成员方法,如果没有写关键字,那么默认就是public。,私有成员关键字private,被private关键字修饰的变量和方法,只能在所属类的内部被调用和修改,不可以在类外被访问,即使是子类也不可以。,class Book private $bookName=PHP从入门到实践; public function setName($bookName) $this-bookName=$bookName; public function getName() return $this-bookName; $book=new Book(); $book-setName(PHP自学视频教
8、程); echo 正确操作私有变量:; echo $book-getName(); echo 错误操作私有变量:; echo $book-bookName; /直接访问私有变量出现错误,保护成员关键字protected,被protected修饰的类成员,可以在本类和子类中被调用,其他地方则不可以被调用。,class Car protected $carName=奥迪系列; class SmallCar extends Car public function say() echo 调用父类中的属性:.$this-carName; $car=new SmallCar(); $car-say();
9、echo $car-carName;/直接访问保护变量出现错误,5 面向对象的继承,主要内容,继承关键字extends,子类调用父类的成员方法,01,02,覆盖父类方法,03,继承关键字extends,class 子类名称 extends 父类名称 / 子类成员变量列表 function 成员方法()/ 子类成员方法 / 方法体 / 省略其他方法 ,语法,子类调用父类的成员方法,通过parent:关键字也可以在子类中调用父类中的成员方法。,parent:父类的成员方法(参数);,语法,覆盖父类方法,覆盖父类方法的关键就是在子类中创建与父类中相同的方法,包括方法名称、参数和返回值类型。,如果父类
10、和子类中都定义了构造方法,当子类的对象被创 建后,将调用子类的构造方法,而不会调用父类的构造方法。,说明,6 static关键字,主要内容,静态属性,静态方法,01,02,静态属性,静态属性就是使用关键字static修饰的成员属性。,类名称:$静态属性名称,语法,如果要在类内部的成员方法中访问静态属性,那么在静态属性的名称前加上操作符“self:”即可。,静态方法,静态方法就是通过关键字static修改的成员方法。,类名称:静态方法名称(参数1,参数2,),语法,静态方法在对象不存在的情况下可以使用类名来访问。在静 态方法中只能访问静态成员,而在非静态方法中可以使用类名或 self关键字访问静
11、态成员。,注意,7 抽象类和接口,主要内容,抽象类,接口,01,02,抽象类,抽象类使用abstract关键字来声明。,abstract class 抽象类名称 /抽象类的成员变量列表 abstract function 成员方法1(参数); abstract function 成员方法2(参数); ,语法,接口,接口的声明,interface 接口名称 / 常量成员 / 抽象方法; ,语法,接口类通过interface关键字来声明。,interface One const CONSTANT=CONSTANT value; function FunOne(); echo One:CONSTAN
12、T;,接口,接口的应用,在子类中继承接口使用implements关键字。如果要实现多个接口的继承,那么每个接口之间使用逗号“,” 连接。,8 面向对象实现多态,主要内容,通过继承实现多态,通过接口实现多态,01,02,通过继承实现多态,【实例】创建一个抽象类type,用于表示各种交通方法,然后让子类继承这个type类。,通过接口实现多态,【实例】定义接口Type,并定义一个空方法go_type()。然后定义Type_car和Type_Bus子类继承接口Type。最后通过instanceof关键字检查对象是否属于接口Type。,9 面向对象的其他关键字,主要内容,final关键字,clone关键
13、字,01,02,instanceof关键字,03,final关键字,被final修饰过的方法在子类中不可以进行重写,也不可以被覆盖。,final class class_name final function method_name() ,格式,clone关键字,克隆对象,$克隆对象名称=clone $原对象名称;,语法,对象的克隆可以通过关键字clone来实现。,clone关键字,克隆副本对象的初始化,魔术方法“_clone()”可以为克隆后的副本对象重新初始化。它不需要任何参数,其中自动包含$this和$that两个对象的引用。,instanceof关键字,instanceof操作符可以检
14、测当前对象是属于哪个类。,ObjectName instanceof ClassName,语法,10 面向对象的常用魔术方法,主要内容,_set()和_get()方法,_isset()和_unset()方法,_call()方法,01,02,03,_toString()方法,04,_autoload()方法,05,_set()和_get()方法,_set()方法:在程序运行过程中为私有的成员属性设置值,它不需要任何返回值。 _get()方法:在程序运行过程中,在对象的外部获取私有成员属性的值。,_isset()和_unset()方法,魔术方法_isset()的作用就是帮助isset()函数检测私有成员属性。,bool_isset(string name),语法,_unset()方法帮助unset()函数在类的外部删除指定的私有成员属性。,void_unset(string name),语法,_call()方法,_call()方法的作用是:当程序试图调用不存在或不可见的成员方法时,PHP会先调用_call()方法来存储方法名及其参数。,_toString()方法,魔术方法_toString()的作用是:当使用echo或print输出对象时,将对象转化为字符串。,(1)如果没有_toString()方法,直接输出对象将会发生致命错误(fatal
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年虚拟现实行业市场潜力与替代品挑战分析报告
- 2026年共享出行自动驾驶报告
- 2026年汽车行业智能座舱交互报告
- 2026年食品科技昆虫蛋白行业创新报告
- 2026年新能源汽车零部件创新技术报告
- 2026年人工智能行业报告:智能语音助手市场现状与未来趋势
- 2026年金融科技行业创新趋势与税收影响报告
- 2026年职业技能培训行业市场占有率研究报告
- 2026年新能源领域创新驱动产业分析报告
- 2026年超深井用高抗挤毁石油管钢行业建设报告及市场投资分析
- 2025年gsp药品批发企业质量风险管理试题及答案
- 药物制剂技术专业教学标准(高等职业教育专科)2025修订
- 泡沫厂生产管理制度
- 《经济法基础》 (第2章) 第一章 总论
- 《海康威视使用说明》课件
- 创新方法大赛理论知识考核试题题库及答案
- 松下-GF2-相机说明书
- 机电样板段配合方案及计划
- 中国子宫内膜增生管理指南(2022)解读
- 布比卡因脂质体注射液-临床用药解读
- 机械制图(高职)全套教学课件
评论
0/150
提交评论