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编程与应用
Oct 09 PHP
sqlyog 中文乱码问题的设置方法
Oct 19 PHP
php合并数组array_merge函数运算符加号与的区别
Oct 31 PHP
ThinkPHP php 框架学习笔记
Oct 30 PHP
PHP文件读写操作之文件写入代码
Jan 13 PHP
php页面缓存ob系列函数介绍
Oct 18 PHP
php数组去重的函数代码
Feb 03 PHP
利用php递归实现无限分类 格式化数组的详解
Jun 08 PHP
解析PHP跨站刷票的实现代码
Jun 18 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
Sep 30 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
May 08 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 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/07/27 PHP
PHP Memcached应用实现代码
2010/02/08 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
Jquery 自定义动画概述及示例
2013/03/29 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
js读取并解析JSON类型数据的方法
2015/11/14 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
2016/06/13 Javascript
javascript中活灵活现的Array对象详解
2016/11/30 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
Python利用pyHook实现监听用户鼠标与键盘事件
2014/08/21 Python
处理Python中的URLError异常的方法
2015/04/30 Python
windows下python安装小白入门教程
2018/09/18 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
基于Python函数和变量名解析
2019/07/19 Python
opencv3/C++实现视频背景去除建模(BSM)
2019/12/11 Python
Python类继承和多态原理解析
2020/02/05 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
担保书怎么写
2014/04/01 职场文书
小学班主任评语大全
2014/04/23 职场文书
高中生操行评语大全
2014/04/25 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
义卖募捐活动总结
2015/05/09 职场文书
中学生运动会广播稿
2015/08/19 职场文书
springboot+VUE实现登录注册
2021/05/27 Vue.js