标签OOP下的文章

Jerry Bendy 发布于 07月16, 2013

PHP类实例教程(十五):final类、final方法和常量

final---用于类、方法前。final类---不可被继承。final方法---不可被覆盖。final类不能被继承。如果我们不希望一个类被继承,我们使用final来修饰这个类。于是这个类将无法被继承。比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型。<?php//声明一个final类MathfinalclassMath{publicstatic$pi=3.14;publicfunction__toString(){return"这是Math类。";}}$math=newMath();echo$math;//声明类SuperMat...

阅读全文 »

Jerry Bendy 发布于 07月16, 2013

PHP类实例教程(十六):PHP5中的常量

在PHP5类中继续使用cons修饰常量。我们使用const定义一个常量,定义的这个常量不能被改变。在PHP5中const定义的常量与定义变量的方法不同,不需要加$修饰符。constPI=3.14;这样就可以。而使用const定义的常量名称一般都大写,这是一个约定,在任何语言中都是这样。如果定义的常量由多个单词组成,使用_连接,这也是约定。比如,MAX_MUMBER这样的命名方式。一个良好的命名方式,是程序员必须注意的。类中的常量使用起来类似静态变量,不同点只是它的值不能被改变。我们使用类名::常量名来调用这个常量。<?php//声明一个final类MathclassMath{constPI=3.14;pub...

阅读全文 »

Jerry Bendy 发布于 07月12, 2013

PHP类实例教程(十四):设计模式之单件模式

单件模式要解决的问题就是“如何让这个类只有一个实例”。我们的web应用中,大量使用了数据库连接,如果反复建立与数据库的连接必然消耗更多的系统资源。我们如何解决这个问题,建立唯一的数据库连接是必要的方式。我们又如何知道与这个数据库的连接是否已经建立?还是需要现在建立?单件模式可以解决这个问题。先假设我们需要一个类完成在内存中只有一份的功能,我们该如何做呢?我们一步一步的使用前面学过的知识来写一个单件的例子。问题1:前面学过,每次用new类名的方式,就可以创建一个对象。我们必须禁止外部程序用new类名的方式来创建多个实例。解决办法:我们将构造函数设置成private,让构造函数只能在内部被调用,而外部不能调用。这样,...

阅读全文 »

Jerry Bendy 发布于 07月11, 2013

PHP类实例教程(十一):类中this关键字

PHP5中为解决变量的命名冲突和不确定性问题,引入关键字“$this”代表其所在当前对象。$this在构造函数中指该构造函数所创建的新对象。在类中使用当前对象的属性和方法,必须使用$this->取值。方法内的局部变量,不属于对象,不使用$this关键字取值。局部变量和全局变量与$this关键字,使用当前对象的属性必须使用$this关键字。局部变量的只在当前对象的方法内有效,所以直接使用。注意:局部变量和属性可以同名,但用法不一样。在使用中,要尽量避免这样使用,以免混淆。<?phpclassA{private$a=99;//这里写一个打印参数的方法publicfunctionprintInt($a){e...

阅读全文 »

Jerry Bendy 发布于 07月11, 2013

PHP类实例教程(十二):类中parent::关键字

PHP5中使用parent::来引用父类的方法。parent::可用于调用父类中定义的成员方法。parent::的追溯不仅于直接父类。通过parent::调用父类方法<?php/***声明一个员工类,经理类继承自员工类*/classemployee{protected$sal=3000;publicfunctiongetSal(){$this->sal=$this->sal+1200;return$this->sal;}}classManagerextendsemployee{//如果想让经理在员工工资的基础上多发1500元//必须先调用父类的getSal()方法publicfunctio...

阅读全文 »

Jerry Bendy 发布于 07月11, 2013

PHP类实例教程(十三):Static的用法

static关键字用来修饰属性、方法,称这些属性、方法为静态属性、静态方法。static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号“::”调用。static关键字可以用来修饰变量、方法。不经过实例化,就可以直接访问类中static的属性和static的方法。static的属性和方法,只能访问static的属性和方法,不能类访问非静态的属性和方法。因为静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用。static的属性,在内存中只有一份,为所有的实例共用。使用sel...

阅读全文 »

Jerry Bendy 发布于 07月06, 2013

PHP类实例教程(十):类的重写(override)

如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。当对父类的方法进行重写时,子类中的方法必须和父类中对应的方法具有相同的方法名称,在PHP5中不限制输入参数类型、参数数量和返回值类型。(这点和JAVA不同)子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。声明方法时,如果不定义访问权限。默认权限为public。先设置一个父类,这个父类是“Dog”类,这个类描述了dog的特性。Dog有2个眼睛,会跑,会叫。就这样描述先。我养了一直狗,是只小狗,符合Dog类的特性,但有所不同。我的小狗有名字,我的小狗太小了,不会大声的叫,只会哼哼。我们用继...

阅读全文 »

Jerry Bendy 发布于 07月03, 2013

PHP类实例教程(九):访问控制 private, protected, public

在PHP5中,可以在类的属性和方法前面加上一个修饰符(modifier),来对类进行一些访问上的控制。Public(公开):可以自由的在类的内部外部读取、修改。Private(私有):只能在这个当前类的内部读取、修改。Protected(受保护):能够在这个类和类的子类中读取和修改。Private的访问权限private不能直接被外部调用,只能由当前对象调用。前面介绍过关于封装的内容这里不再重复。比如你可以借钱给别人,但不希望别人知道你钱包里面有多少钱。我们把它用private隐藏起来。<?phpclassMoney{private$mymoney=1000;//我有点钱数//借出钱的方法publicfun...

阅读全文 »

Jerry Bendy 发布于 06月29, 2013

PHP类实例教程(七):析构函数与PHP的垃圾回收

析构函数:当某个对象成为垃圾或者当对象被显式销毁时执行。GC(GarbageCollector)在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁。这是PHP的GC(GarbageCollector)垃圾处理机制,防止内存溢出。当一个PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中的所有对象同样被销毁。__destruct()析构函数,是在垃圾对象被回收时执行。析构函数也可以被显式调用,但不要这样去做。析构函数是由系统自动调用的,不要在程序中调用一个对象的析构函数。析构函数不能带有参数。程序结束前,所有对象被销毁。析构函数被调用了。<?phpclassPers...

阅读全文 »

Jerry Bendy 发布于 06月29, 2013

PHP类实例教程(八):类的继承

继承是面向对象最重要的特点之一,就是可以实现对类的复用。通过“继承”一个现有的类,可以使用已经定义的类中的方法和属性。继承而产生的类叫做子类。被继承的类,叫做父类,也被成为超类。PHP是单继承的,一个类只可以继承一个父类,但一个父类却可以被多个子类所继承。从子类的角度看,它“继承(inherit,extends)”自父类;而从父类的角度看,它“派生(derive)”子类。它们指的都是同一个动作,只是角度不同而已。子类不能继承父类的私有属性和私有方法。在PHP5中类的方法可以被继承,类的构造函数也能被继承。继承的简单例子我们分析自然界中的关系,动物类与犬类的关系。<?PhpclassAnimal{privat...

阅读全文 »