php类与对象-第 12 讲 PHP 类和对象.ppt 第 44 页

课程内容安排 $this关键字调用变量调用其他方法调用变量调用当前对象的属性值必须使用$this关键字,通过符号“->”来调用。 我们通过一个例子来看一下通过$this关键字调用的私有属性值。 [练习 1113] 创建一个价格类别来反映价格的变化。 原价88,当前价格108。通过调用变量输出当前商品价格和原价。 调用其他方法通过$this不仅可以调用变量,还可以直接调用类中的函数。 我们通过一个例子来看看$this是如何调用函数的。 [练习1114] 声明类Comp,并设置方法sum 来估计两个变量的总和。 定义方法 prt 计算两个变量的乘积。 再次定义方法product,并通过调用前两个方法来估计(a+b)*c的值。 课程内容安排 static 关键字 static 属性 静态模式 static 属性 一个类的所有实例共享该类中的静态属性,也就是说,显存中虽然有多个实例,但静态属性只有一个。 访问这个类时,不需要实例化它,而是直接使用属性名加两个破折号“::”来直接访问类中的静态属性。 【练习1115】定义count和sum为两个静态属性,并用它们来估计10的阶乘。 静态方法 如果该方法被声明为静态,则该方法不能在类中被this引用,而可以在有以下两种方式: 【练习1116】定义Math类,并声明静态方法sum和product,参数为num1和num2,分别估计两个数字的和以及两个数字的乘积。

调用静态方法来估计两个数字 88 和 100 的和,以及两个数字 66 和 88 的乘积。在类中: self::static 成员名称。 在类之外:类名::静态成员名。 课程内容安排final关键字final函数调用final类不能继承final方法不能重画final函数调用final函数是指在函数之前用final关键字修饰的函数,调用final函数的方法与通常的方式相同。 一般实例化后,直接使用“->”符号即可实现对最终函数的调用。 [练习1117] 声明circle类,通过声明area方法来估计直径为10的圆,并将该方法定义为最终函数。 这个技巧在实例化后调用。 最终类不能被继承。 Final类不仅可以修改方法,还可以修改类。 用final修饰的类称为final类,用final修饰的类不能被继承,继承会出错。 【练习1118】将Math设置为final类,声明一个面积方法,并计算圆的面积。 定义circle类并继承Math类的属性和技巧,重写area方法php类与对象,计算圆的边长。 最终方法无法重绘。 如果不希望类中的某个方法被泛型重绘,只需在该方法前添加final修饰符,即设置为final方法即可。

【练习1119】创建一个Math类,声明方法String和sum,使用方法String返回“这是Math类”,使用方法sum计算两个数字的和,并将方法sum设置为final,然后创建一个SuperMath类并继承Math类,并重绘方法sum。 课程内容安排 综合练习 创建Student类,参考如下要求: 定义变量名、班级、编号、性别 创建setInfo()方法,设置数据成员信息。 创建 getInfo($var) 方法,返回 $var 指定的值($var 参数可以是 name、class、number、sex 之一,注意错误参数的处理)。 通过定义构造函数,设置默认的人员信息为:“张三”,1201班,001,男; 实例化该对象php类与对象,调用getInfo方法,输出人员信息; 调用setInfo()方法,将其信息设置为你的真实信息,并调用getInfo方法输出。 本节结束课外辅导:每周一晚上19:00-21:00实训楼3311计算机教研室*1-*北京远志天下科技有限公司 课程:《PHP编程》 * 课程:《网页》 《样式与布局技术》 * 北京远志天下科技有限公司课程:《PHP 编程》 * 1-* 北京远志天下科技有限公司课程:《PHP 编程》 * 第十二讲 PHP 类和对象 讲师:李志文邮箱:l@lzw。 我QQ:532927789 TEL:网站:课程内容安排类使用类和对象创建类实例化类方法使用类和对象类是一组具有相同属性和行为的具体对象,是具体的、概念上定义的。

类只是对对象的描述,就像设计好的零件图一样,但这个零件并不存在。 对象是实际存在的此类事物的个体,就像根据图纸制造的零件一样,如图11-1所示。 对象属于某个类,每个对象都是某个类的实例。 例如,水星、金星和地球都是行星,月球就是行星的一个例子。 对象是封装数据属性和行为的实体,属性指的是事物本身的特征。 例如,人的姓名、性别、身高、体重等或者产品的品牌、价格、功能等都是对象的属性。 同一类的所有对象都具有相同的属性,并且属性具有相同的含义,但状态可以不同。 水星和金星都具有行星属性,但属性值不同。 图11-1 类与对象的关系 创建类 在PHP 中,用户可以创建类,即声明类。 声明类就是在要创建的类名前添加关键字class。 类名可以是任何非 PHP 保留字。 常用的句型为:class class_name{var attribute 1;var attribute 2;function function_name1{//此处定义的方法声明}function function_name2{//此处定义的方法声明}} 代码说明如下。

class是声明类的关键字; class_name是要创建的类的名称; 大括号内是类的声明变量和行为。 实例化一个类就是创建一个类来使用这个类,使用一个类就是实例化这个类。 实例化的过程就像是按照图纸生产零件一样。 实例化方法是使用关键字new加类名。 这个过程称为创建对象。 例如创建中学生类后,实例化该类。 技巧的使用 对对象属性的操作称为对象技巧。 方法(函数)与上面第5章中提到的函数非常相似,但这里的方法用于定义特定类的行为。 与函数一样,方法可以直接接受输入参数并向调用者返回值。 其声明方法与上面提到的函数相同。 在对象名称后添加函数。 通常的方法是: function functionName( ){//这里定义的方法声明} 【练习111】创建Student类,定义变量名,创建setName()方法来设置$name数据成员。 创建一个返回 $name 值的 getName() 方法。 实例化对象并输出名称“李雷”。 课程内容编排类的访问控制公共属性改变属性值私有属性protected属性const属性公共属性通过关键字public声明的属性称为公共属性,可以在类内外自由读取和修改,这看起来错误的安全性,破坏了其封装特性。

【练习112】定义Student类,将变量name和age分别设置为PHP和20,用public声明其属性,实例化后输出其name和age。 更改属性值当属性声明为public时,定义属性时可以不设置初始值,可以将其传递给属性形参,但如果在第一次定义属性时设置了初始值,则外部调用时也可以根据需要进行更改。 【练习113】实例化示例代码112中的Student类,输出姓名为Jim,年龄为21。 私有属性 Private修改的属性无法在当前对象外部访问,设置私有属性是为了数据隐藏。 如果数组被声明为私有(private),则意味着该数组只能在本类中使用。 在这个类中,可以通过$this->来调用。 如果外部引用私有属性,就会报错。 【练习114】定义Student类,将其属性$name修改为private,实例化后调用其属性。 protected 属性保护的数组的范围介于 public 和 private 之间。 如果该成员被声明为protected(受保护),则意味着该数组可以在该类及其泛型中使用。 【练习115】设置一个me类,现有100元,将其设为受保护属性,有一款产品价格为60元,客户给出价格为30,判断该产品可以销售,并且最后输出最终的金额。

const 属性 在PHP5的类中,可以使用const来定义常量,并且定义的常量不能被改变。 const 定义的常量与定义变量的方式不同。 const 定义的常量名前面不需要加 $ 修饰符。 类中的常量像静态变量一样使用,不同的是常量的值不能改变。 定义常量的结构为: const 常量名; //常量名不能使用$符号。 如果数组被声明为const(常量),它的值将不再改变。 【练习116】定义权重类,设置9.8和3.14159为常量,分别赋值给G和PI,然后输出它们的值,课程内容安排的特点类继承多态封装继承继承是面向对象编程语言继承的主要特点之一就是实现类的重用。 简单来说,继承就像指称老师一样。 教书育人是教师的共同特点。 说到数学教师,那就是数学教师还具有教书育人的特点,即继承了教师教书育人的特点。 通过“继承”已有的类,可以避免类似类的重复定义,提高编程效率。 通过继承形成的类称为泛型类型,继承的类称为父类。 其结构为: Class newclassname extends oldclassname 关键字“extends”表示继承关系,oldclassname为继承的类,newclassname为要创建的泛型类型。

其特点如下。 PHP是单继承的,一个泛型只能继承一个父类,但一个父类可以被多个基类继承。 继承是从泛型的角度看,子类继承父类,派生是从父类的角度看,派生出泛型类型。 它们都指的是同一个动作,只是角度不同。 子类不能继承父类的私有属性和私有技能。 类中的方法可以被继承。 【练习117】设置一个sell类,现有100元,将其设为受保护属性,有一款产品价格为60元,客户给出的价格为110,判断该产品可以sell,now类继承了sell的属性以及输出最终金额的方式。 多态性 多态性包括重载和重绘。 当从父类继承的方法不能满足基类的需要时,重写父类的过程称为重绘。 重绘父类的方法时,子类中的方法必须与父类中对应的方法同名。 子类中的方法不能使用比重绘的超类中的方法更严格的访问权限。 【练习118】定义一个名为Child的类,并设置getlegNum、speack、run这三个技能。 其功能是“设置数据成员legNum,输出“它会说中文”,输出“它正在运行......”。实例化该对象并输出结果,然后定义一个Mychild类,继承Child的方法和属性班级,并设定儿子的名字是“李雷”。

由于年龄小,speack方法被重写为输出“he is so much that he can say Nothing.”,并实例化输出结果。 课程内容安排构造函数创建构造函数调用父类构造函数创建构造函数声明构造函数,与声明其他函数相同,只不过构造函数的名称是固定的,即函数名称必须是_construct。 PHP 中的这些新的声明式构造函数使用唯一的名称,因此在更改类的名称时,无需更改构造函数的名称。 其一般结构如下: class classnamefunction _construct([argument1, argument2, argument2]) {/*类初始化代码 */} 构造函数被定义为在实例化对象时手动执行的一段代码。 【练习119】创建用户类,设置属性name、password、lastLogin,并将密码和用户登录时间设置为私有属性以保证保密性。 使用构造函数设置其成员变量,然后使用getLastLogin()方法获取上次访问时间,并输出用户名和上次访问时间。 调用父类构造函数构造函数可以调用其他构造函数,但不会手动调用父类构造函数。 调用时必须使用parent关键字来调用。

【练习1110】在学生类中定义构造函数,输出“我是学生。”,然后定义教师类继承学生类的属性和技能。 在教师类中定义构造函数来调用父类的构造函数,然后输出“我是老师”。 课程内容安排 析构函数 析构函数调用 使用其他方法调用析构函数 析构函数调用 默认情况下,PHP 在实例化和使用后,仅释放对象属性占用的显存,不会销毁对象相关资源。 借助析构函数,使用一个对象,然后执行代码消除显存,从显存中销毁该对象。 析构函数__destruct()的结构如下: class classnamefunction _ destruct () {/*类初始化代码*/} 析构函数由系统手动调用,不能有参数。 【练习1111】声明Counter类,在类中定义析构函数,并输出“析构函数已执行”。 实例化类后,使用 do 循环输出大于 5 的整数之和。 使用其他方式调用析构函数 当 PHP 脚本不再与对象关联时,将调用析构函数。 如果要显式销毁一个对象,则可以不为指向该对象的变量赋值。 通常变量参数为NULL或unset被调用。

【练习1112】在Counter类中构造析构函数,输出“析构函数已执行”。 实例化后,消除变量,最后输出一个不小于3的整数,Oracle数据库10g:管理讲习班II 1-* 1-* 北京远志天下科技有限公司 课程:《PHP编程》 * 课程:《网页》样式与布局技术》* 北京远志天下科技有限公司课程:《PHP 编程》* 1-* 北京远志天下科技有限公司课程:《PHP 编程》* *