已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五讲 面向对象I 课前回顾 一、创建和输出数组(掌握) 二、增加和删除数组元素(掌握) 三、定位和遍历数组(掌握) 四、数组排序(了解) 五、其他常用数组函数(了解) 课程目标 一、什么是面向对象(理解) 二、类和对象(掌握) 三、类的成员(掌握) 四、构造函数和析构函数(掌握) 五、其他关键字和辅助函数(了解) 4 5.1 什么是面向对象 对象是一个封装数据属性和操作行为的实体. PHP的WEB技术面向对象是仿造现实对象建立的,他们也有状态和行为。 软件对象在一个 或多个变量中维护它的状态。变量是一个由标识符命名的数 据项。对象用方法实现它的行为。方法是与一个对象相关联的函数(子过程) 。 对象有二个性质:状态(state)和行为(behavior)。 面对对象技术的基本观点如下: (1)客观世界由对象组成。 (2)具有相同数据(属性)和操作(方法)的对象可归纳成类。 (3)类可以派生出子类,子类除了继承父类的全部特性外还可以有自己的特性 (4)对象之间的联系通过消息传递(可理解为方法调用)来维系。 假设m1是类Manager的一个实例(或对象),当外界要求把这个对象所 代表的那位经理的级别改变为2时,就应以下面的方式向这个对象发 出一条消息: ml.ChangeLevel(2)消息传递 一、什么是对象 5 将相关的变量和方法封装进一个简洁的软件组合是一种简单而强大的思想, 它给软件开发人员提供了两个主要的好处: 模块化:一个对象的源代码可以独立于其他对象的源代码进行编写和维护。 另外,对象很容易地在系统中传递。你可以将你的自行车对象交给其他人,而它 仍然会正常工作。(重构、代码复用) 隐藏信息:对象有一个公共接口,其他对象可以使用这个接口与它通信。对 象可以维护私有的信息和方法,可以在任何时候改变这些信息和方法,而不影响 依赖于它的其他对象。你不需要理解你自行车使用的变速齿轮机制就能够使用它 。 即是:封装 5.1 什么是面向对象 6 5.2 对象 属性 型号 价格 里程 行为 起动 停车 行驶 属性 车轮数量 档的数量 行为 加速 换档 刹车 属性 名称 颜色 品种 行为 摇尾巴 吃东西 犬 吠 7 类是一组具有相同数据结构和相同操作对象的集合。 在现实世界中,常常有相同类型的许多对象。例如,你的自行车只是 世界上的许多自行车之一。用面向对象的术语来说,你的自行车对象是自行车 类的一个实例。自行车有一些共有的状态(当前的变速齿轮、当前的步调、两 个轮子)和行为(改变变速齿轮、刹车)。但是,每辆自行车状态独立于其他 自行车状态,也就说每辆自行车的状态可以互不相同。 5.3 什么是类 8 一、创建类: 创建一个类:class 创建对象: 我们使用关键字new用给定的类创建一个对象: $object = new Class(); 假定我们已经定义了一个Person类,以下代码将创建一个Person对 象: $rasmus = new Person(); 二、类的实例化: 5.3.1 创建类 9 “); /下面创建类实例 $name1=new myName(“周洲“); $name2=new myName(“周阳“); $name3=new myName(“周文“); ? 实例: 浏览器输出结果: 我的名字是:周洲 我的名字是:周阳 我的名字是:周文 5.3.1 创建类 5.4.1 类的成员-字段 1、声明字段 Class Staff public $name=“lucky“; private $age=25; 2、使用字段 与变量不同,使用字段要使用-操作符,而不是美元符号 $employee=new Staff(); echo $employee-name; 当在定义字段的类中引用字段时要使用$this关键字。$this表示当前类 1、_set() /两个下划线 Class Test public $name=“lucky“; var $age=18; function _set($propname,$propvalue) $this-$propname=$propvalue; print “ok“; $model=new Test(); $model-age=25; $model-title=“English“; print “age: “.$model-age.“; print “title: “.$model-title.“; 可用来验证某个属性是否存在或增加新的属性 5.4.2 类的成员-属性_set() 2、_get() /两个下划线 Class Test public $name=“lucky“; Var $age=25; Public $address=“北京”; Function _get($propname) $vars=array(“name“,“age“,“address“); if(in_array($propname,vars) return $this-$propname; else return “No such variable!“; 5.4.3 类的成员:属性_get() 2、_get() /两个下划线 $model=new Test(); echo $model-city; 它接受一个属性名作为输入参数,获取该属性的值。 5.4.3 类的成员:属性_get() 3、 访问类成员变量有一个特殊的一指针$this。通过该指针,可以方便地 访问类属性或者给类属性赋值。 class Person var $name; /定义属性 function get_name() /无参数 return $this-name; /$this去访问和设置当前对象的$name属性 function set_name($new_name) / 有参数 $this-name = $new_name; /同上注释 echo $this-name; 5.4.4 自定义获取方法和设置方法 方法和函数非常相似,只不过方法是用来定义特定类的行为。与函数一样, 方法可以接受参数,并可以返回一个值。方法的调用只是在方法前面加上调 用方法的对象的名称,如下 $object-methodname(); 1、声明方法 Class Staff public function show() echo “调用了方法“; 5.4.5 方法 2、调用方法 $employee=new Staff(); $employee-show(); 5.4.5 方法-方法调用 5.5 控制对类的成员访问 (1)public :在任何位置都可以读取和修改这个成员变量或者调用这个方 法。这个修饰符在外部代码使用,由给定类中的代码使用,或者在扩展给定 类的功能的类中使用。 (2)private : 只有这个类中的代码才能读取和修改私有变量或者调用私有 成员函数。其他代码、类或者扩展这个类的功能类(子类)不能使用私有条 目。 (3)protected : 外部代码与给定类不相关的其他类不能读取或者修改使用 了关键字protected的成员变量,也不能调用受保护的成员函数。 (4)abstract 定义抽象类 (5)final 子类方法不允许覆盖父类方法 先了解,下一章重点阐述 5.5.1 构造函数 构造函数是类中的一个特殊函数,当使用 new 操作符创建一个类的实 例时,构造函数将会自动调用。 Php5中以_construct()作为构造函数。而php4中是以将和类名相同的函数 作为构造函数。为了兼容php5先寻找_construct(),如果找不到再寻找以类 名命名的构造函数 如果一个类没有构造函数,则调用基类的构造函数 Class Staff function _construct() /两个下划线 echo “调用了构造函数“; function Staff() echo “调用了构造函数2“; $employee=new Staff(); 5.5.2 构造函数 5.5.3 析构函数 析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁 时执行。 脚本执行结束时,php会撤销内存中的所有对象,因此如果实例化时创 建的信息都会保留到内存中,就不需要显式的声明析构函数。但是如果创建 了不那么容易丢失的数据时(例如连接数据库)就应当定制析构函数进行销 毁数据。 Class Staff function _construct() echo “调用了构造函数“; function _destruct() echo “调用了析构函数,需要释放和销毁的“; $employee=new Staff(); 5.5.4 析构函数 5.5.5 静态类成员 当需要一些所有类对象共享的字段和方法时就需要创建一些静态的字 段和方法。 Class Staff public static $name=“静态字段“; static function show() echo self:$name,“; echo Staff:$name,“; Staff:show(); 5.5.6 常量 常量 (const)即不会在类中改变的值,对于该类的任何实例化的对象来说 常量值在这些对象的整个生命周期中都保持不变 Class Staff const CITY=“北京”; echo Staff:CITY; 5.6 Instanceof 使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年酒店经营合同模板
- 2024年钢筋施工合同协议书
- 个人自建房屋买卖合同范文2024年
- 2024年银行借贷款合同范本
- 2024年材料采购合同经典范本
- 2024年员工借调合同
- 万科公寓租赁合同模板2024年
- 种植用手动挖洞器项目评价分析报告
- 2024年标准版钢材购销合同范本
- 研磨用刚玉砂项目可行性实施报告
- 结构件抗弯截面系数计算
- 松鼠先生和第一场雪ppt课件
- 牛腿计算(配筋)
- EXCEL进度表制作
- 殡葬资格考试:殡葬法律法规及服务真题库
- 75桶混砂车技术方案讲解
- 无损检测作业指导书(共4页)
- 房屋质量鉴定机构的要满足哪些条件?
- 建设工程质量监督交底记录
- 中国科学院创新文化建设调研报告
- 单位委托存档人员聘用期内情况表
评论
0/150
提交评论