接口:不同类的共同行为进行定义,然后在不同类中实现不同的功能。

接口的具体语法:

  1. 接口是零件可以用多个零件组成一个新东西;

  2. 接口本身是抽象的,内部申明的方法也是抽象的; 不用加abstract

  3. 一个类可以一次性实现多个接口。语法用implements实现,然后在把接口的功能实现;

  4. 接口也可以基继承,用extends;

  5. 接口是一堆方法的说明,不能加属性(成员变量);

  6. 接口就是供组装成类用的,方法只能用public;

接口作为一种严格规范 降低开发者与调用者的沟通

1、接口实现
举例 人类、动物实现某个动作
定义接口

  1. interface Action(){ 

  2. //接口定义‘public’访问属性方法,无需实现方法 

  3. public function eat( $foods ); 


  4. } 


Human ( Animl ) 类实现接口

  1. class Human implements Action(){ 

  2. //实现接口,必须提供接口中定义的方法 

  3. public function eat( $foods){ 

  4. echo "Human eat {$foods}"; 

  5. } 


  6. } 


  7. #Animal类 

  8. class Animal implements Action(){ 

  9. public function eat( $foods){ 

  10. echo "Animal eat {$foods}"; 

  11. } 


  12. } 

Human( Animal )实现eat的动作:

  1. $human = new Human(); 

  2. $human->eat(); 


  3. $animal = new Animal(); 

  4. $animal->eat(); 

instanceof 判断某个对象是否实现了某个接口

  1. function CheckEat( $obj ){ 

  2. if( $obj instanceof Action ){ 

  3. $obj->eat( 'orange' ); 

  4. }else{ 

  5. echo "the object not implements Action"; 

  6. } 

  7. } 

  8. CheckEat( $human ); 

  9. CheckEat( $animal ); 

2、接口继承

  1. //extends 让接口继承接口 

  2. interface IcanPee extends Action(){ 

  3. public function pee(); 

  4. } 


  5. //当类实现子接口时,父接口定义的方法也需要在这个类里面具体实现 

  6. Class Human1 implements IcanPee(){ 

  7. public function pee(){ } 

  8. public function eat( $foods ){ } 

  9. } 

  • 某个类实现(implements)了某个接口和继承(extends)了某个类的区别?

    • 实现接口和继承很类似,但接口不能直接创建自己的对象

    • 继承的父类必须有该方法的具体实现,子类可以重写父类的方法,也可以不写

    • 接口里面的方法是不需要具体实现的,只要定义了方法的名称和参数即可,具体的实现必须在实现类中定义

    • 一句话概括: 类的方法必须有实现,接口的方法必须为空。

PHP接口学习的更多相关文章

  1. C# 常用接口学习 ICollection<T>

    C# 常用接口学习 ICollection<T> 作者:乌龙哈里 时间:2015-11-01 平台:Window7 64bit,Visual Studio Community 2015 参 ...

  2. C# 常用接口学习 IComparable 和 IComparer

    C# 常用接口学习 IComparable 和 IComparer 作者:乌龙哈里 时间:2015-11-01 平台:Window7 64bit,Visual Studio Community 201 ...

  3. 工程化编程实战callback接口学习笔记

    一.编译并运行 help.version命令执行正常,但quit命令出错 二.Debug 从命令输入到执行过程: 源代码: 更改后: 运行结果:能正确运行quit命令 Callback接口学习成果: ...

  4. caffe的python接口学习(1):生成配置文件

    caffe是C++语言写的,可能很多人不太熟悉,因此想用更简单的脚本语言来实现.caffe提供matlab接口和python接口,这两种语言就非常简单,而且非常容易进行可视化,使得学习更加快速,理解更 ...

  5. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [3] 首页 APP 接口开发方案 ② 读取缓存方式

    以静态缓存为例. 修改 file.php line:11 去掉 path 参数(方便),加上缓存时间参数: public function cacheData($k,$v = '',$cacheTim ...

  6. OpenCV(C++接口)学习笔记1-图像读取、显示、保存

    OpenCV在2.0加入版本号之后C++接口函数,学习前C语言的接口功能.现在OpenCV它已被发展到2.4.9版本号,所以,我决定学习C++接口函数,与步伐. 1.创建图像 cv::Mat imag ...

  7. C# 常用接口学习 IEnumerable<T>

    作者:乌龙哈里 时间:2015-10-24 平台:Window7 64bit,Visual Studio Community 2015 本文参考: MSDN IEnumerable<T> ...

  8. java Thread 接口学习

    对于程序员来说 Thread应该都不会陌生,具体的接口调用不是本篇的重点.Thread的基本概念及接口的使用:java多线程 下面将更多的从底层实现角度讲一下Thread. Thread的声明如下: ...

  9. JDBC 接口学习

    说明:文章所有内容皆选自实验楼教程[JDBC 入门教程],想要学习更多JDBC,可以点击教程进行学习~ JDBC 简介 JDBC 的全称是 Java Database Connectivity,叫做 ...

  10. JMeter接口学习笔记2017

    协议学习地址:http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html 本篇学习笔记来自于慕课网上学习JMeter的学习笔记 学习 ...

随机推荐

  1. onclick = xxx这种赋值写法绑定事件的原理是什么?

    本文转自知乎貘吃馍香的回答 提问:刚入门不久,能力有限,这个问题我描述起来有点困难,只有劳烦各位大神细看了 我之前一直以为js底层存在类似下面这样的代码: //给所有dom对象定义好onclick值为 ...

  2. 学习MVC之租房网站(三)-编写实体类并创建数据库

    在上一篇<学习MVC之租房网站(二)-框架搭建及准备工作>中,搭建好了项目框架,并配置了EF.Log4Net和进程外Session.接下来会编写Eneity类并采用CodeFirst的方式 ...

  3. 0-创建scott示例数据

    CREATE TABLE dept (  deptno INT PRIMARY KEY,  dname VARCHAR(14),  loc VARCHAR(13) );   INSERT INTO d ...

  4. 【小瑕疵】表单中的button会自动提交?

    在表单中使用button标签的时候会发现,即使什么类型都没有设置,但是在点击的时候会发现,表单会自动提交 比如: 我在一个表单的button中添加一个函数,当点击这个按钮时会增加一行内容: 但是当我实 ...

  5. Web 网站服务

    Apache 简介 Apache HTTP Server(简称Apache)是开放源码的网页服务器,基于标准的HTTP网站协议提供网页浏览服务,在Web服务器领域中长期保持着超过半数的份额.Apach ...

  6. 【微信小程序】认识微信小程序

    目前微信小程序已经支持个人版了 罗列一下微信开发的一些资料和工具 (如果你还不了解微信小程序如何操作请点击  新手教程 )里面罗列了 开发者工具 如何使用 和 微信的基本操作 很详细 一.微信开发者工 ...

  7. Python中使用with语句同时打开多个文件

    下午小伙伴问了一个有趣的问题, 怎么用 Python 的 with 语句同时打开多个文件? 首先, Python 本身是支持同时在 with 中打开多个文件的 with open('a.txt', ' ...

  8. Debian 8 下安装持续集成的工具Jenkins

    前情提示:Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 第一种方法: 1.1 配置java环境变量    解压java到相应目录,我一般习惯把安装的软件 ...

  9. 【2017-05-04】winfrom进程、线程

    一.进程 一个进程就是一个程序,利用进程可以在一个程序中打开另一个程序. 1.开启某个进程Process.Start("文件缩写名"); 注意:Process要解析命名空间. 2. ...

  10. Linux centos7下安装配置redis及Redis desktop Manager工具连接注意事项

    基本工具:VMware12.CentOS-7-x86_64-Everything-1611.iso.redis-desktop-manager-0.8.0.3841 废话不多说,首先,关于什么是Red ...