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实现的简单压缩英文字符串的代码
Apr 24 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
PHP两种去掉数组重复值的方法比较
Jun 19 PHP
smarty模板引擎之分配数据类型
Mar 30 PHP
PHP MYSQL实现登陆和模糊查询两大功能
Feb 05 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
thinkphp自带验证码全面解析
Sep 18 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
Nov 20 PHP
php7新特性的理解和比较总结
Apr 14 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 PHP
Thinkphp5.0框架视图view的模板布局用法分析
Oct 12 PHP
laravel框架语言包拓展实现方法分析
Nov 22 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实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
2013/11/22 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
微信小程序 使用picker封装省市区三级联动实例代码
2016/10/28 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
angularjs实现table增加tr的方法
2018/02/27 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
深入探讨JavaScript的最基本部分之执行上下文
2019/02/12 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
layui的select联动实现代码
2019/09/28 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
vue+iview使用树形控件的具体使用
2020/11/02 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
python执行外部程序的常用方法小结
2015/03/21 Python
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
2020/02/25 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
全神贯注教学反思
2014/02/03 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS