PHP面向对象程序设计之接口的继承定义与用法详解
程序员文章站
2022-09-05 07:53:47
本文实例讲述了php面向对象程序设计之接口的继承定义与用法。分享给大家供大家参考,具体如下:
在php5中,接口是可以继承自另外一个接口的。这样代码的重用更有效了。要注意...
本文实例讲述了php面向对象程序设计之接口的继承定义与用法。分享给大家供大家参考,具体如下:
在php5中,接口是可以继承自另外一个接口的。这样代码的重用更有效了。要注意只有接口和接口之间使用 继承关键字 extends
。类实现接口必须实现其抽象方法,使用实现关键字 implements
。
下面的这个例子定义接口user,user有两个抽象方法 getname和setname。 又定义了接口vipuser, 继承自user接口,并增加了和折扣相关的方法getdiscount。
最后定义了类 vip ,实现了vipuser接口。并实现了其中的三个方法。
<?php interface user { public function getname(); public function setname($_name); } interface vipuser extends user { public function getdiscount(); //添加了获得折扣的抽象方法. } class vip implements vipuser { private $name; private $discount = 0.8;// 定义折扣变量 public function getname(){ //实现getname方法 return $this->name; } public function setname($_name){//实现setname方法 $this->name = $_name; } public function getdiscount(){//实现折扣方法. return $this->discount; } } ?>
接口可以实现多继承,这是接口很特殊的地方。注意下面的代码和用法。
<?php interface user { public function getname(); public function setname($_name); } interface administrator { public function setnews($_news); } //注意这里的多继承. interface newsadministrator extends user,administrator{ } class newsadmin implements newsadministrator { //实现接口 public function getname(){ //......... } public function setname($_name){ //......... } public function setnews($_news){ //......... } } ?>
抽象类实现接口,可以不实现其中的抽象方法,而将抽象方法的实现交付给具体能被实例化的类去处理。
<?php interface user { public function getname(); public function setname($_name); } //abstractnormaluser 只实现了 user接口中的一个方法, abstract class abstractnormaluser{ protected $name; public function getname(){ return $this->name; } } //这里实现了接口的另外一个方法. class normaluser extends abstractnormaluser { public function setname($_name){ $this->name = $_name; } } $normaluser = new normaluser(); $normaluser->setname("tom"); echo "name is ".$normaluser->getname(); ?>
运行结果:
name is tom
更多关于php相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《php数组(array)操作技巧大全》、《php基本语法入门教程》、《php运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家php程序设计有所帮助。
上一篇: PHP面向对象程序设计之多态性的应用示例
下一篇: PHP支付宝当面付2.0代码