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 19 PHP
php面向对象的方法重载两种版本比较
Sep 08 PHP
php foreach 参数强制类型转换的问题
Dec 10 PHP
php数组的一些常见操作汇总
Jul 17 PHP
解析curl提交GET,POST,Cookie的简单方法
Jun 29 PHP
php计算当前程序执行时间示例
Apr 24 PHP
php采用curl模仿登录人人网发布动态的方法
Nov 07 PHP
PHP可变函数学习小结
Nov 29 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
Dec 27 PHP
thinkPHP框架中layer.js的封装与使用方法示例
Jan 18 PHP
php判断IP地址是否在多个IP段内
Aug 18 PHP
php实现JWT验证的实例教程
Nov 26 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极大的增强功能和性能
2006/10/09 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
php全角字符转换为半角函数
2014/02/07 PHP
php中in_array函数用法分析
2014/11/15 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
2012/05/23 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
jQuery跨域问题解决方案
2015/08/03 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
Vue内部渲染视图的方法
2019/09/02 Javascript
Vue+Node实现的商城用户管理功能示例
2019/12/23 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
[02:44]DOTA2英雄基础教程 魅惑魔女
2014/01/07 DOTA
python 对dataframe下面的值进行大规模赋值方法
2018/06/09 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
django教程如何自学
2020/07/31 Python
美国名牌太阳镜折扣网站:Eyedictive
2017/05/15 全球购物
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
三月雷锋月活动总结
2014/07/03 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
2014年学前班工作总结
2014/12/08 职场文书
运动会开幕词
2015/01/28 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
大学学生会竞选稿
2015/11/19 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
JUnit5常用注解的使用
2021/07/02 Java/Android
图神经网络GNN算法
2022/05/11 Python