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下载远程文件类(支持断点续传)
Nov 14 PHP
php中判断字符串是否全是中文或含有中文的实现代码
Sep 16 PHP
php 如何获取数组第一个值
Aug 06 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
thinkphp实现面包屑导航(当前位置)例子分享
May 10 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
PHP+JS实现大规模数据提交的方法
Jul 02 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
Sep 23 PHP
PHP7常量数组用法分析
Sep 26 PHP
PHP文件操作实例总结【文件上传、下载、分页】
Dec 08 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 PHP
php7 错误处理机制修改实例分析
May 25 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
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
php冒泡排序与快速排序实例详解
2015/12/07 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
2014/04/04 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
2018/06/19 Javascript
Vue指令指令大全
2019/02/09 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
2019/04/04 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
Python 制作糗事百科爬虫实例
2016/09/22 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
python模块smtplib学习
2018/05/22 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
Python3.6简单的操作Mysql数据库的三个实例
2018/10/17 Python
tensorflow实现对张量数据的切片操作方式
2020/01/19 Python
jupyter notebook 重装教程
2020/04/16 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
内科护士实习自我鉴定
2013/10/17 职场文书
环境科学专业个人求职的自我评价
2013/11/28 职场文书
工厂厂长的职责
2013/12/12 职场文书
小学元宵节活动总结
2015/02/06 职场文书
保卫工作个人总结
2015/03/03 职场文书
撤诉书怎么写
2015/05/19 职场文书
2019关于实习生工作安排及待遇的管理方案!
2019/07/16 职场文书
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android
VMware虚拟机安装 Windows Server 2022的详细图文教程
2022/09/23 Servers