PHP入门第18章面向对象编程.ppt

上传人:sh****n 文档编号:6398455 上传时间:2020-02-24 格式:PPT 页数:28 大小:730.86KB
返回 下载 相关 举报
PHP入门第18章面向对象编程.ppt_第1页
第1页 / 共28页
PHP入门第18章面向对象编程.ppt_第2页
第2页 / 共28页
PHP入门第18章面向对象编程.ppt_第3页
第3页 / 共28页
点击查看更多>>
资源描述
面向对象编程 类的声明 类的声明是类应用的前提条件 只有在创建了类 属性和方法之后 才可以实现类的实例化 调用类中方法实现某个封装的功能 所以类的声明是一切操作的源泉 这里主要讲解以下内容 1 类的定义 2 成员属性 3 成员方法 类的定义 类的定义主要是通过class关键字加类名来实现的 类的格式如下 权限修饰符是可选项 可以使用public protected private或者省略这3者 class是创建类的关键字 类名是所要创建类的名称 必须写在class关键字之后 在类的名称后面必须跟上一对大括号 类体是类的成员 类体必须放在类名后面的两个大括号 和 之间 类的定义实例 例如 创建一个ConnDB类 代码如下 注意 虽然ConnDB类仅有一个类的骨架 什么功能都没有实现 但这并不影响它的存在 一个类即一对大括号之间的全部内容都要在一段代码段中 不允许将类中的内容分割成块 例如 这种格式是不允许的 成员属性 概念 在类中直接声明的变量称为成员属性 也可以称为成员变量 可以在类中声明多个变量 即对象中有多个成员属性 每个变量都存储对象不同的属性信息 类型 成员属性的类型可以是PHP中的标量类型和复合类型 但是如果使用资源和空类型是没有意义的 成员属性的声明 成员属性的声明必须有关键字来修饰 例如 public protected private等 这是一些具有特定意义的关键字 如果不需要有特定的意义 那么可以使用var关键字来修饰 还有就是在声明成员属性时没有必要赋初始值 成员属性的实例 下面再次创建ConnDB类并在类中声明一些成员属性 其代码如下 classConnDB var dbtype var host var user var pwd var dbname var debug var conn 成员方法 概念 在类中声明的函数称为成员方法 一个类中可以声明多个函数 即对象中可以有多个成员方法 成员方法的声明 成员方法的声明和函数的声明是相同 唯一特殊之处是成员方法可以有关键字来对它进行修饰 控制成员方法的权限 声明成员方法的代码 声明成员方法的代码如下 classConnDB functionConnDB functionGetConnId functionCloseConnId this conn Disconnect 类的实例化 类创建成功后是远远不够的 只有在经过了实例化之后 在可以调用类中的方法完成指定的操作 这里主要讲解有关类的实例化的一些方法 1 创建对象 2 访问类中成员 3 特殊的访问方法 this 和 4 构造方法和析构方法 创建对象 类的实例化格式如下 变量名 new类名称 参数 变量名 类实例化返回的对象名称 用于引用类中的方法 new 关键字 表明要创建一个新的对象 类名称 表示新对象的类型 参数 指定类的构造方法用于初始化对象的值 如果类中没有定义构造函数 PHP会自动创建一个不带参数的默认构造函数 创建对象的实例 例如 这里对上面创建的ConnDB类进行实例化 其代码如下 classConnDB functionConnDB 方法体 functionGetConnId 方法体 functionCloseConnId this conn Disconnect connobj1 newConnDB connobj2 newConnDB connobj3 newConnDB 访问类中的成员 在类中包括成员属性和成员方法 访问类中的成员包括成员属性和方法的访问 访问方法与访问数组中的元素类似 需要通过对象的引用来访问类中的每个成员 其中还要应用到一个特殊的运算符号 访问类中成员的语法格式如下 变量名 new类名称 参数 变量名 成员属性 值 变量名 成员属性 变量名 成员方法 特殊的访问方法 this 和 1 this this存在于类的每个成员方法中 它是一个特殊的对象引用方法 成员方法属于哪个对象 this引用就代表哪个对象 其作用就是专门完成对象内部成员之间的访问 2 操作符 相比 this引用只能在类的内部使用 操作符 才是真正的强大 操作符 可以在没有声明任何实例的情况下访问类中的成员 例如 在子类的重载方法中调用父类中被覆盖的方法 操作符 的语法格式如下 关键字 变量名 常量名 方法名这里的关键字分为3种情况 parent关键字 可以调用父类中的成员变量 成员方法和常量 self关键字 可以调用当前类中的静态成员和常量 类名 可以调用本类中的变量 常量和方法 构造方法和析构方法 1 构造方法概述 构造方法是对象创建完成后第一个被对象自动调用的方法 它存在于每个声明的类中 是一个特殊的成员方法 如果在类中没有直接声明构造方法 那么类中会默认生成一个没有任何参数且内容为空的构造方法 声明方法 1 第一种在PHP5以前的版本中 构造方法的名称必须与类名相同 2 第二种在PHP5的版本中 构造方法的方法名称必须是以两个下划线开始的 construct 语法格式如下所示 function construct mixedargs 方法体 说明 在PHP中 一个类只能声明一个构造方法 在构造方法中可以使用默认参数 实现其他面向对象的编程语言中构造方法重载的功能 如果在构造方法中没有传入参数 那么将使用默认参数为成员变量进行初始化 构造方法和析构方法 2 析构方法概念 析构方法的作用和构造方法正好相反 是对象被销毁之前最后一个被对象自动调用的方法 它是PHP5中新添加的内容 实现在销毁一个对象之前执行一些特定的操作 诸如关闭文件 释放内存等等 声明方法 析构方法的声明格式与构造方法类似 都是以两个下划线开头的 destruct 析构函数没有任何参数 其语法格式如下 function destruct 方法体 通常是完成一些在对象销毁前的清理任务 注意 在PHP中 有一种 垃圾回收 机制 可以自动清除不再使用的对象 释放内存 而析构方法就是在这个垃圾回收程序执行之前被调用的方法 在PHP中它属于类中的可选内容 面向对象的封装特性 面向对象的封装特性 将类中的成员属性和方法结合成一个独立的相同单位 并尽可能隐藏对象的内容细节 其目的就是确保类以外的部分不能随意存取类的内部数据 成员属性和成员方法 从而有效避免外部错误对类内数据的影响 类的封装是通过关键字public private protected static和final来实现的 下面对其中的public private和protected关键字进行详细讲解 public 公共成员 可以公开的 没有必要隐藏的数据信息 可以在程序的任何地点 类内 类外 被其他的类和对象调用 子类可以继承和使用父类中所有的公共成员 private 私有成员 被private关键字修饰的变量和方法 只能在所属类的内部被调用和修改 不可以在类外被访问 即使是子类中也不可以 protected 保护成员 private关键字可以将数据完全隐藏起来 除了在本类外 其他地方都不可以调用 子类也不可以 但对于有些变量希望子类能够调用 但对另外的类来说 还要做到封装 这时 就可以使用protected 被protected修饰的类成员 可以在本类和子类中被调用 其他地方则不可以被调用 面向对象的继承特性 面向对象的继承特性 使一个类继承并拥有另一个已存在类的成员属性和成员方法 其中被继承的类称为父类 继承的类称为子类 通过继承能够提高代码的重用性和可维护性 类的继承 extends关键字类的继承是类与类之间的一种关系的体现 子类不仅有自己的属性和方法 而且还拥有父类的所有属性和方法 正所谓子承父业 在PHP中 类的继承通过关键字extends实现 其语法格式如下 class子类名称extends父类名称 function成员方法 方法体 省略其他方法 类的继承 parent 关键字通过parent 关键字也可以在子类中调用父类中的成员方法 其语法格式如下 parents 父类的成员方法 参数 覆盖父类方法所谓覆盖父类方法 也就是使用子类中的方法将从父类中继承的方法进行替换 也叫方法的重写 覆盖父类方法的关键就是在子类中创建与父类中相同的方法 包括 方法名称 参数和返回值类型 抽象类和接口 抽象类 Abstract 和接口 Interface 属于不能被实例化的特殊类 它们都是配合面向对象的多态性一起使用 本节将对抽象类 接口的声明和使用方法进行讲解 1 抽象类概述 抽象类是一种不能被实例化的类 只能作为其他类的父类来使用 抽象类的声明 抽象类使用abstract关键字来声明 其语法格式如下 abstractclass抽象类名称 abstractfunction成员方法1 参数 abstractfunction成员方法2 参数 抽象类与抽象方法 抽象类和普通类相似 包含成员变量 成员方法 两者的区别在于 抽象类至少要包含一个抽象方法 抽象方法没有方法体 其功能的实现只能在子类中完成 抽象方法也是使用abstract关键字来修饰 注意 在抽象方法后面要有分号 抽象类和抽象方法主要应用于复杂的层次关系中 这种层次关系要求每一个子类都包含并重写某些特定的方法 抽象类和接口 2 接口概述 继承特性简化了对象 类的创建 增加了代码的可重性 但PHP只支持单继承 如果想实现多重继承 就要使用接口 PHP可以实现多个接口 接口的声明接口类通过interface关键字来声明 接口中声明的方法必须是抽象方法 接口中不能声明变量 只能使用const关键字声明为常量的成员属性 并且接口中所有成员都必须具备public的访问权限 接口声明的语法格式如下 interface接口名称 常量成员抽象方法 接口和抽象类相同都不能进行实例化的操作 也需要通过子类来实现 但是接口可以直接使用接口名称在接口外去获取常量成员的值 抽象类和接口 例如 下面声明一个One接口 其代码如下 interfaceOne constCONSTANT CONSTANTvalue functionFunOne 接口之间也可以实现继承 同样需要使用extends关键字 例如 下面声明一个Two接口 通过extends关键字继承One 其代码如下 interfaceTwoextendsOne functionFunTwo 抽象类和接口 接口的应用因为接口不能进行实例化的操作 所以要使用接口中的成员 那么就必须借助子类 在子类中继承接口使用implements关键字 如果要实现多个接口的继承 那么每个接口之间使用逗号 连接 面向对象的多态性 面向对象的多态性 是指一段程序能够处理多种类型对象的能力 例如 在介绍面向对象特点时举的火车和汽车的例子 虽然火车和汽车都可以移动 但是它们的行为是不同的 火车要在铁轨上行驶 而汽车则在公路上行驶 下面将介绍多态的两种实现方法 1 通过继承实现多态 2 通过接口实现多态 面向对象的关键字 在面向对象中提供了很多的关键字 通过这些关键字可以对类中的成员 方法 属性和变量进行修饰 以此实现特定的操作 本节中将介绍面向对象中的3个常用关键字 1 final关键字final 中文含义是最终的 最后的 被final修饰过的类和方法就是 最终的版本 如果有一个类的格式为 finalclassclass name 说明该类不可以再被继承 也不能再有子类 如果有一个方法的格式为 finalfunctionmethod name 说明该方法在子类中不可以进行重写 也不可以被覆盖 这就是final关键字的作用 2 static关键字 声明静态类成员在PHP中 通过static关键字修饰的成员属性和成员方法被称为静态属性和静态方法 静态属性和静态方法不需要在被类实例化的情况下就可以直接使用 面向对象的关键字 1 静态属性静态属性就是使用关键字static修饰的成员属性 它属于类本身而不属于类的任何实例 它相当于存储在类中的全局变量 可以在任何位置通过类来访问 静态属性访问的语法如下 类名称 静态属性名称其中的符号 被称为范围解析操作符 用于访问静态成员 静态方法和常量 还可以用于覆盖类中的成员和方法 如果要在类内部的成员方法中访问静态属性 那么在静态属性的名称前加上操作符 self 即可 2 静态方法静态方法就是通过关键字static修改的成员方法 由于它不受任何对象的限制 所以可以不通过类的实例化直接引用类中的静态方法 静态方法引用的语法如下 类名称 静态方法名称 参数1 参数2 同样如果要在类内部的成员方法中引用静态方法 那么也是在静态方法的名称前加上操作符 self 注意 在静态方法中 只能调用静态变量 而不能调用普通变量 而普通方法则可以调用静态变量 使用静态成员 除了可以不需要实例化对象 另一个作用就是在对象被销毁后 仍然保存被修改的静态数据 以便下次继续使用 3 clone关键字 克隆对象1 克隆对象对象的克隆可以通过关键字clone来实现 使用clone克隆的对象与原对象没有任何关系 它是将原对象从当前位置重新复制了一份 也就是相当于在内存中新开辟了一块空间 clone关键字克隆对象的语法格式如下 克隆对象名称 clone 原对象名称 对象克隆成功后 它们中的成员方法 属性以及值是完全相同的 如果要为克隆后的副本对象在克隆时重新为成员属性赋初始值 那么就要使用到下面将要介绍的魔术方法 clone 2 克隆副本对象的初始化魔术方法 clone 可以为克隆后的副本对象重新初始化 它不需要任何参数 其中自动包含 this和 that两个对象的引用 this是副本对象的引用 that则是原本对象的引用 面向对象的魔术方法 所谓面向对象的魔术方法 就是在PHP中以两个下划线开头的方法 本节中将对其中的常用方法进行介绍 其内容包括 1 set 和 get 方法 set 和 get 方法对私有成员进行赋值或者获取值的操作 set 方法 在程序运行过程中为私有的成员属性设置值 它不需要任何返回值 set 方法包含两个参数 分别表示变量名称和变量值 两个参数不可省略 这个方法不需要主动调用 可以在方法前加上private关键字修饰 防止用户直接去调用 get 方法 在程序运行过程中 在对象的外部获取私有成员属性的值 它有一个必要参数 即私有成员属性名 它返回一个允许对象在外部使用的值 这个方法同样不需要主动调用 可以在方法前加上private关键字 防止用户直接调用 2 isset 和 unset 方法 isset 方法的语法格式 bool isset stringname unset 方法的语法格式 void unset stringname 3 call 方法 call 方法的作用是 当程序试图调用不存在或不可见的成员方法时 PHP会先调用 call 方法来存储方法名及其参数 call 方法包含两个参数 即方法名和方法参数 其中 方法参数是以数组形式存在的 面向对象的魔术方法 4 toString 方法魔术方法 toString 的作用是 当使用echo或print输出对象时 将对象转化为字符串 5 autoload 方法将一个独立 完整的类保存到一个PHP页中 并且文件名和类名保持一致 这是每个开发人员都需要养成的良好习惯 这样 在下次重复使用某个类时就可以很轻松地找到它 但还有一个问题是让开发人员头疼不已的 如果要在一个页面中引进很多的类 需要使用include once 函数或require once 函数一个一个地引入 在PHP5中应用 autoload 方法解决了这个问题 autoload 方法可以自动实例化需要使用的类 当程序要用到一个类 但该类还没有被实例化时 PHP5将使用 autoload 方法 在指定的路径下自动查找和该类名称相同的文件 如果找到则继续执行 否则报告错误 Thankyou
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!