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.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明。