PHP面向对象接口如何使用?接口与抽象类的相同之处和区别

PHP面向对象接口如何使用?接口与抽象类的相同之处和区别!接口在php面向对象当中,定义了实现某种服务的一般规范,声明了所需的函数和常量。

PHP面向对象接口如何使用?接口与抽象类的相同之处和区别!接口在php面向对象当中,定义了实现某种服务的一般规范,声明了所需的函数和常量。

在PHP中抽象类和接口有一定的相似性,却又有所不同,那么在PHP中抽象类和接口有哪些相同之处,又有哪些区别呢?

下面来看看在PHP中接口怎么定义及使用、抽象类和接口在什么时候使用、接口与抽象类的概念、PHP面向对象接口与抽象类的相同之处、PHP面向对象接口与抽象类的区别。

PHP面向对象接口如何使用?接口与抽象类的相同之处和区别插图
PHP面向对象接口如何使用?接口与抽象类的相同之处和区别

PHP面向对象接口定义及使用

在PHP面向对象中接口我们使用interface来定义,而实现接口的时候,我们使用implements关键词来实现。

定义语法:

<?php
//定义一个接口
interface interfacename{
    pulice function functionname();
}
//实现一个接口
class classname implements interfacename{
    //必须实现接口中的方法;
    function functionname(){

    }
}
?>

一个类可以实现多个接口,实现多个接口的时候,使用英文半角逗号隔开,同时在类中需要全部实现接口中定义的方法,否则就会报错。

抽象类和接口在什么时候使用?

当你关注一个事物本质的时候,使用抽象类;当你关注一个操作的时候,使用接口。

接口与抽象类的概念:

接口是对动作的抽象,表示这个对象能做什么,对类的局部行为进行抽象。

抽象类是对根源的抽象,表示这个类是什么,对类的整体进行抽象,对一类事物的抽象描述。

PHP面向对象接口与抽象类的相同之处:

  • 接口与抽象类都是面向对象中的抽象类,都不用实例化;
  • 接口与抽象类的子类都必须要实现已经声明的抽象方法。

PHP面向对象接口与抽象类的区别:

  • 一个类可以实现多个接口,但是只能继承一个抽象方法;
  • 接口强调的是特定功能的实现,而抽象类所强调的则是所属关系;
  • 抽象类是接口与类的中介。
  • 接口需要实现用implements关键词,而抽象类需要继承,要用extends关键词。

PHP面向对象接口使用实例代码

<?php
//创建一个奖项接口
interface prize{
    function best($forword,$midfield,$defender,$goalkeeper);
}
//创建一个球员身价接口
interface PlayerValue{
    function Plaryer($name,$team,$Value);
}
//创建一个serie_a类并实现接口prize、PlayerValue及其方法。
class serie_a implements prize,PlayerValue{
    function best($forword, $midfield, $defender, $goalkeeper)
    {
        echo '意甲联赛最佳前锋是:'.$forword.'<br>';
        echo '意甲联赛最佳中场是:'.$midfield.'<br>';
        echo '意甲联赛最佳后卫是:'.$defender.'<br>';
        echo '意甲联赛最佳门将是:'.$goalkeeper.'<br>';
    }
    function Plaryer($name, $team, $Value)
    {
        echo $name;
        echo '所属球队是:'.$team.',';
        echo '身价是:'.$Value;
    }
}

//创建一个la_liga类并实现prize的方法
class la_liga implements prize{
    function best($forword, $midfield, $defender, $goalkeeper)
    {
        echo '西甲联赛最佳前锋是:'.$forword.'<br>';
        echo '西甲联赛最佳中场是:'.$midfield.'<br>';
        echo '西甲联赛最佳后卫是:'.$defender.'<br>';
        echo '西甲联赛最佳门将是:'.$goalkeeper.'<br>';
    }
}
//实例化类$serie_a,并传递参数;
$serie_a = new serie_a();
echo $serie_a->best('莱奥','布罗左维奇','布雷默','迈尼昂').'<br>';
echo $serie_a->Plaryer('莱奥','Ac米兰','7500万欧元');
echo '<hr>';
//实例化类$la_liga,并传递参数;
$la_liga = new la_liga();
echo $la_liga->best('本泽马','卡塞米罗','卡瓦哈尔','布努');
?>

在serie_a类中,实现了两个接口prize和PlayerValue两个接口,如果我们实现了两个接口,只实现两个接口中的一个方法,那肯定会报错的,所以我们实现了几个接口,就必须全部实现接口中定义的方法,否则就会报错。

温馨提示:
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:duhaomu@163.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明

给TA赞赏
共{{data.count}}人
人已赞赏
编程技巧

PHP如何更改imagecreatetruecolor函数背景色?

2016-6-1 9:00:00

编程技巧

PHP static静态变量方法如何使用?PHP static静态变量方法实例代码

2016-6-4 9:00:00

0 条回复 A文章作者 M管理员
----《》
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索