- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
构造函数。在PHP?4中,在类的内部与类同名的函数都被认为是构造函数,在创建类的对象时被自动执行。而在PHP?5中,构造函数的名称为__construct,“construct”的前面是两根下划线。如果一个类同时拥有__construct构造函数和与类名相同的函数,PHP?5将把__construct看做是构造函数。PHP中的构造函数可以带参数,也可以不带参数。 析构函数。类的析构函数的名称是__destruct,如果在类中声明了__destruct函数,PHP将在对象被销毁前调用析构函数将对象从内存中销毁,节省服务器资源。 例如: ?php class Con { function __construct($num) { echo 执行构造函数$num; } function __destruct() { echo 执行析构函数; } } $a=new Con(1); //输出执行构造函数1 $b=new Con(2); //输出执行构造函数2 //执行结束,最后输出执行析构函数执行析构函数 ? 1. 子类访问父类 在PHP中,允许通过继承其他类的方法来调用这些类里已经定义好的属性和方法,PHP不支持多继承,所以一个子类只能继承一个父类。可以使用extends关键字来指明类与类之间的继承关系。例如,以下是类B继承类A的代码。 另外值得注意的是,继承是单方向的,子类可以从父类中继承特性,但父类却无法从子类中继承特性。 如果子类中没有自己的构造函数,那么子类在实例化时会自动调用父类的构造函数。如果子类中有自己的构造函数,则执行自己的构造函数。 如果要在子类中调用父类的方法,除了使用“$this-”外,还可以使用parent关键字加范围解析符,如“parent::functionname()”。建议使用后一种方法,因为前面的方法容易造成子类和父类方法结构不清。而对于父类的属性,在子类中只能使用“$this-”来访问,属性是不区分父类和子类的。 继承可以是多重的,例如,类B继承了类A,类C继承了类B,那么类C也就继承了类B和类B的父类的所有特性。 2. 重载 方法的重载是指在一个类中可以定义多个拥有相同名称的方法,通过参数个数和类型来区分这些方法,而PHP目前并不支持这一特性。但可以通过类的继承,在子类中定义和父类中相同名称的方法来实现类似于方法重载的特性。例如。 上述代码中,类B重载了类A的属性$attribute和方法func(),但类A的初始定义不会改变,例如,在以上代码的最后添加如下两行: $a=new A; $a- func(); //输出父类A 3. 使用final关键字 PHP?5引入了final关键字,在声明类时使用这个关键字,将使这个类不能被继承。例如,定义一个类A: final class A { //…. } 如果类B尝试继承类A,将会提示以下错误: Fatal error: Class B may not inherit from final class (A) 另外,如果将final关键字用于声明类中的方法,该方法将不能在任何子类中重载。 1. 抽象类 抽象类也是PHP?5引入的新特性,它是一种特殊的类,使用关键字abstract来定义,不能被实例化。一个抽象类中至少包含一个抽象方法,抽象方法也是由abstract关键字来定义。抽象方法只提供了方法的声明,不提供方法的具体实现。例如: abstract function func($name, $number); 包含抽象方法的类必须是抽象类。 抽象类不能用于创建对象,所以只能通过继承来使用。继承抽象类的子类,必须重载抽象类中的所有抽象方法才能被实例化。例如。 2. 接口 PHP只能进行单继承,即一个类只能有一个父类。为了解决这个问题,PHP?5引入了接口的概念,接口是一个特殊的抽象类,使用interface关键字取代class关键字来定义。抽象类中允许存在非抽象的方法和属性,而在接口中定义的方法都是抽象方法。在接口中不能使用属性,但可以使用const关键字定义的常量。例如: const con=tom; 接口的定义方法和定义类的方法类似,在接口中定义抽象方法不使用abstract关键字。例如: ? interface stu { const name=tom; function show(); function getname($name); } ? 接口和类一样,也支持继承,接口之间的继承也使用extends关键字。例如: ?php interface A { const name=; function show(); } interface B extends A { function g
文档评论(0)