您的位置:首页 > 编程语言 > PHP开发

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

2019-02-20 14:42 726 查看

本文原创自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(name)17//.........1819publicfunctionsetNews(_name){ 17 //......... 18 } 19 public function setNews(n​ame)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
normalUser−&gt;setName(&quot;tom&quot;);21echo&quot;nameis&quot;.normalUser-&gt;setName(&quot;tom&quot;); 21 echo &quot;name is &quot;.normalUser−>setName("tom");21echo"nameis".normalUser->getName();
22
?>

运行结果:

name is tom
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: