PHP面向对象程序设计之接口用法


Posted in PHP onAugust 20, 2014

接口是PHP面向对象程序设计中非常重要的一个概念。本文以实例形式较为详细的讲述了PHP接口的用法。具体如下:

接口:interface

在PHP中,我们可以规定,一个对象应该具有哪些公共的外部操作,即可使用interface来规定。
公共的方法就是接口。用于规定一个对象应该用于哪些公共的操作方法(接口),这个也叫接口(公共操作方法的集合)
即:接口(interface结构,公共方法集合)

公共方法(接口方法)
定义:用于限定某个对象所必须拥有的公共操作方法的一种结构,称之为接口(interface)
语法:定义接口结构,使用interface关键字。接口内定义的都是一些公共方法。

interface接口名
{
公共操作方法列表
}

例子如下:

interface I_Goods
{
public function sayName();
public function sayPrice();
}

注意:
1.接口方法,访问权限必须是公共的 public
2.接口内只能有公共方法,不能存在成员变量
3.接口内只能含有未被实现的方法,也叫抽象方法,但是不用abstract关键字。

类实现接口,利用关键字implements完成。

例子:

interface I_Goods
{
public function sayName();
public function sayPrice();
}
class Goods implements I_Goods
{
public function sayName()
{
}
public function sayPrice()
{
}
}

这样,实现该接口的类,必须实现接口内所有的抽象方法。而且可以肯定,该方法一定是公共的外部操作方法。

多实现:该功能,在理论上可以通过抽象类来实现,但是抽象类,不专业。
使用接口则专业些,实现上,因为php支持多实现,而仅支持单继承

例子如下:

interface I_Goods
{
public function sayName();
public function sayPrice();
}
interface I_Shop
{
public function saySafe();
}
class Goods implements I_Goods , I_Shop
{
public function sayName()
{
}
public function sayPrice()
{
}
public function saySafe()
{
}
}

接口之间也可以继承
例子如下:

interface I_Goods
{
public function sayName();
public function sayPrice();
}
interface I_Shop extends I_Goods
{
public function saySafe();
}
class Goods implements I_Shop
{
public function sayName()
{
}
public function sayPrice()
{
}
public function saySafe()
{
}
}

php对象接口的支持,可以定义类常量

例子如下:

interface I_Goods
{
const PAI = 3.14;
public function sayName();
public function sayPrice();
}
interface I_Shop extends I_Goods
{
public function saySafe();
}
class Goods implements I_Shop
{
public function sayName()
{
}
public function sayPrice()
{
}
public function saySafe()
{
}
}
echo Goods::PAI;

运行输出:3.14

PHP 相关文章推荐
PHP 中的面向对象编程:通向大型 PHP 工程的办法
Dec 03 PHP
Mysql中limit的用法方法详解与注意事项
Apr 19 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
Apr 28 PHP
php下正则来匹配dede模板标签的代码
Aug 21 PHP
hadoop中一些常用的命令介绍
Jun 19 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
php实现图形显示Ip地址的代码及注释
Jan 20 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
thinkphp框架实现数据添加和显示功能
Jun 29 PHP
PHP registerXPathNamespace()函数讲解
Feb 03 PHP
PHP+jQuery实现即点即改功能示例
Feb 21 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
Aug 20 #PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
Aug 20 #PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
Aug 20 #PHP
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
Aug 20 #PHP
PHP文件缓存内容保存格式实例分析
Aug 20 #PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 #PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 #PHP
You might like
常用的php对象类型判断
2008/08/27 PHP
PHP系列学习之日期函数使用介绍
2012/08/18 PHP
PHP中使用cURL实现Get和Post请求的方法
2013/03/13 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
JavaScript面向对象编程
2008/03/02 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中将字典转换为列表的方法
2016/09/21 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
高三学生评语大全
2014/04/25 职场文书
仓管员岗位职责
2015/02/03 职场文书
三好学生竞选稿
2015/11/21 职场文书
2019秋季运动会口号
2019/06/25 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android
vue-cil之axios的二次封装与proxy反向代理使用说明
2022/04/07 Vue.js