PHP面向对象程序设计之接口的继承定义与用法详解

本文原创自news.mkq.online
版权声明:本文为原创文章,版权牛站新闻所有
转载请注明http://www.niuzhan.com/Bago/

本文实例讲述了PHP面向对象程序设计之接口的继承定义与用法。分享给大家供大家参考,具体如下:

在PHP5中,接口是可以继承自另外一个接口的。这样代码的重用更有效了。要注意只有接口和接口之间使用 继承关键字 extends。类实现接口必须实现其抽象方法,使用实现关键字 implements。

下面的这个例子定义接口User,User有两个抽象方法 getName和setName。 又定义了接口VipUser, 继承自User接口,并增加了和折扣相关的方法getDiscount。

最后定义了类 Vip ,实现了VipUser接口。并实现了其中的三个方法。
01
<?php
02
interface User {
03
public function getName();
04
public function setName($_name);
05
}
06
interface VipUser extends User {
07
public function getDiscount(); //添加了获得折扣的抽象方法.
08
}
09
class Vip implements VipUser {
10
private $name;
11
private $discount = 0.8;// 定义折扣变量
12
public function getName(){ //实现getName方法
13
return KaTeX parse error: Expected 'EOF', got '}' at position 19: …s->name; 14 }̲ 15 public f…_name){//实现setName方法
16
$this->name = $_name;
17
}
18
public function getDiscount(){//实现折扣方法.
19
return $this->discount;
20
}
21
}
22
?>

接口可以实现多继承,这是接口很特殊的地方。注意下面的代码和用法。
01
<?php
02
interface User {
03
public function getName();
04
public function setName(KaTeX parse error: Expected 'EOF', got '}' at position 13: _name); 05 }̲ 06 interface …_news);
08
}
09
//注意这里的多继承.
10
interface NewsAdministrator extends User,Administrator{
11
}
12
class NewsAdmin implements NewsAdministrator { //实现接口
13
public function getName(){
14
//…
15
}
16
public function setName( n a m e ) 17 / / . . . . . . . . . 18 19 p u b l i c f u n c t i o n s e t N e w s ( _name){ 17 //......... 18 } 19 public function setNews( name)17//.........1819publicfunctionsetNews(_news){
20
//…
21
}
22
}
23
?>

抽象类实现接口,可以不实现其中的抽象方法,而将抽象方法的实现交付给具体能被实例化的类去处理。
01
<?php
02
interface User {
03
public function getName();
04
public function setName($_name);
05
}
06
//AbstractNormalUser 只实现了 User接口中的一个方法,
07
abstract class AbstractNormalUser{
08
protected $name;
09
public function getName(){
10
return KaTeX parse error: Expected 'EOF', got '}' at position 19: …s->name; 11 }̲ 12 } 13 //这里…_name){
16
$this->name = $_name;
17
}
18
}
19
$normalUser = new NormalUser();
20
n o r m a l U s e r − &gt; s e t N a m e ( &quot; t o m &quot; ) ; 21 e c h o &quot; n a m e i s &quot; . normalUser-&gt;setName(&quot;tom&quot;); 21 echo &quot;name is &quot;. normalUser>setName("tom");21echo"nameis".normalUser->getName();
22
?>

运行结果:

name is tom
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值