站内搜索

本次搜索找到结果 68 条
多态这个概念,在Java中指的是变量可以指向的对象的类型,可是变量声明类型的子类。对象一旦创建,它的类型是不变的,多态的是变量。在PHP5中,变量的类型是不确定的,一个变量可以指向任何类型的数值、字符串、对象、资源等。我们无法说PHP5中多态的是变量。我们只能说在PHP5中,多态应用在方法参数的类型提示位置。一个类的任何子类对象都可以满足以当前类型作为类型提示的类型要求。所有实现这个接口的类,都可以满足以接口类型作为类型提示的方法参数要求。简单的说,一个类拥有其父类、和已实现接口的身份。通过实现接口实现多态<?phpclassUser{//User接口publicfunctiongetName(){}}cl...
抽象类实现接口,可以不实现其中的抽象方法,而将抽象方法的实现交付给具体能被实例化的类去处理。<?phpinterfaceUser{functiongetName();functionsetName($_name);}//此处只是实现了一个接口的一个方法abstractclassabatractNormalUserimplementsUser{protected$name;functiongetName(){return$this->name;}}//这里实现了接口的另外一个方法classNormalUserextendsabatractNormalUser{functionsetName($_name...
PHP是弱类型语言,向方法传递参数时候也不太区分类型。这样的使用会引起很多的问题,PHP开发者认为,这些问题应该是由代码书写者在书写代码时进行检验以避免。没有类型提示很危险。<?phpclassNormalUser{/**其它相关代码..省略........*/private$age;publicfunctionsetAge($_age){$this->age=$_age;}publicfunctiongetAge(){return$this->age;}}$normalUser=newNormalUser();$normalUser->setAge("Iamtom");//这里我们传输一...
一个接口可以继承自另外的接口。PHP5中的类是单继承,但是接口很特殊。一个接口可以继承自多个接口。一个接口继承其它接口时候,直接继承父接口的静态常量属性和抽象方法。在PHP5中,接口是可以继承自另外一个接口的。这样代码的重用更有效了。要注意只有接口和接口之间使用继承关键字extends。类实现接口必须实现其抽象方法,使用实现关键字implements。接口实现继承要注意只有接口和接口之间使用继承关键字extends。类实现接口必须实现其抽象方法,使用实现关键字implements。这个例子定义接口User,User有两个抽象方法getName和setName。又定义了接口VipUser,继承自User接口,并增加...
类实现接口要使用implements。类实现接口要实现其中的抽象方法。一个类可以实现多个接口。一个类可以使用implements实现接口,甚至可以实现多个接口。大部分的书说,这样是为了实现PHP的多继承。为什么呢?PHP5是单继承的,一个类只可以继承自一个父类。接口可以实现多个,这样就是多继承了。这样说有些道理。但,既然接口里面的方法没有方法体,所谓的多继承又有什么意义?接口的意义在于后面一节继续说的多态。使用implements实现接口使用implements来实现一个接口。如果实现接口而没有实现其中的抽象方法,会报错如下。Fatalerror:InterfacefunctionUser::getName()c...
接口(interface)是抽象方法和静态常量定义的集合。接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量。接口中没有其它类型的内容。接口的定义我们先写接口的定义,后面几节再介绍接口的意义。下面的例子是接口的一个简单写法。<?phpinterface接口名{}?>下面的例子定义了一个接口User,这个接口中有两个抽象方法,getName()和setName()。能看到接口的写法和类很相似。<?phpinterfaceUser{functionsetName($name);functiongetName();}?>接口中的抽象方法注意,在接口中只能有抽象方法。如果在接口中出现了非...
抽象类的应用就是典型的模版模式,先声明一个不能被实例化的模版,在子类中去依照模版实现具体的应用。模版模式实例我们写这样一个应用:银行计算利息,都是利率乘以本金和存款时间,但各种存款方式计算利率的方式不同,所以,在账户这个类的相关方法里,只搭出算法的骨架,但不具体实现。具体实现由各个子类来完成。<?php//程序设计模式的模块部分abstractclassLoadAccount{//利息,本金protected$interest,$fund;publicfunctioncalculateInterest(){//取得利率$this->interest=getInterestRate();//用于计算利息...
可以使用abstract来修饰一个类或者方法。用abstract修饰的类表示这个类是一个抽象类,用abstract修饰的方法表示这个方法是一个抽象方法。抽象类不能被实例化。抽象方法是只有方法声明,而没有方法的实现内容。abstract抽象类可以使用abstract来修饰一个类。用abstract修饰的类表示这个类是一个抽象类。抽象类不能被实例化。这是一个简单抽象的方法,如果它被直接实例化,系统会报错。<?php//定义一个抽象类abstractclassUser{publicfunction__toString(){returnget_class($this);}}//实例化这个类会出现错误echonewU...
在PHP5类中继续使用cons修饰常量。我们使用const定义一个常量,定义的这个常量不能被改变。在PHP5中const定义的常量与定义变量的方法不同,不需要加$修饰符。constPI=3.14;这样就可以。而使用const定义的常量名称一般都大写,这是一个约定,在任何语言中都是这样。如果定义的常量由多个单词组成,使用_连接,这也是约定。比如,MAX_MUMBER这样的命名方式。一个良好的命名方式,是程序员必须注意的。类中的常量使用起来类似静态变量,不同点只是它的值不能被改变。我们使用类名::常量名来调用这个常量。<?php//声明一个final类MathclassMath{constPI=3.14;pub...
final---用于类、方法前。final类---不可被继承。final方法---不可被覆盖。final类不能被继承。如果我们不希望一个类被继承,我们使用final来修饰这个类。于是这个类将无法被继承。比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型。<?php//声明一个final类MathfinalclassMath{publicstatic$pi=3.14;publicfunction__toString(){return"这是Math类。";}}$math=newMath();echo$math;//声明类SuperMat...