PHP与大多数面向对象编程语言一样,不支持多重继承。也就是说每个类只能继承一个父类

接口正是解决每个类只能继承一个父类这个问题的

接口用什么权限,继承的那个方法也要使用什么权限。

接口的声明使用:interface

接口的继承使用:implements

目录++++++++++++++++++++++++++++++++++++++++++++

00x1 接口的声明以及接口的引用(案例一)

00x2 如何继承多个接口(案例二)

00x3 判断某个对象是否实现了某个接口(案例三)

++++++++++++++++++++++++++++++++++++++++++++++

00x1 案例一

<?php
interface icaneat{ #使用interface声明一个接口
public function eat($food); //接口里面不需要有方法的实现
}
class Human implements icaneat{ #使用implements继承接口(不能使用extends),稍后要与接口对接的属性或者方法要与其一致。
public function eat($food){ #如该行所示,要与接口的属性或者方法一致。
echo "i eating ".$food."\n"; //实现了某一个接口之后,必须提供接口中定义的方法的具体实现。
}23
}
$test=new Human();
$test->eat('apple');
?>
输出效果如下:
i eating apple

00x2 案例二

在implments使用后用逗号隔开即可实现对多个接口的继承。

格式:

  implements 接口1,接口2,....

<?php
interface icaneat{
public function eat($food);
}
interface hello{
public fuction hello($nihao);
}
class Human implements icaneat,hello{ #使用逗号隔开即可实现对多个接口的继承
public function eat($food){
echo "i eating ".$food."\n";
}
}
$test=new Human();
$test->eat('apple'); ?>

00x3 案例三

使用instanceof关键词检验

范例:var_dump($object instanceof hello); #对象$object是否实现了hello接口

<?php
interface test
{
public function one($a);
}
interface test2
{
public function two($b);
}
class chengdaniu implements test,test2
{
public function one($a){
echo "我爱WEB安全技术!";
}
public function two($b){
echo "我要成大牛!";
}
}
$shi=new chengdaniu();
var_dump($shi instanceof test);
?>
输出效果如下所示:

boolean true

THE END


跟着百度学PHP[4]OOP面对对象编程-12-对象接口技术(interface)的更多相关文章

  1. 跟着百度学PHP[4]OOP面对对象编程-7-OOP的一些关键子讲解

    面对对象常用的一些关键子:http://www.cnblogs.com/xishaonian/p/6146794.html排版不是很好望见谅. THE END

  2. 跟着百度学PHP[4]-OOP面对对象编程-1-什么是面对对象编程

    该阶段学习参考:http://www.cnblogs.com/xiaochaohuashengmi/archive/2010/09/10/1823042.html 面向对象编程(Object Orie ...

  3. 跟着百度学PHP[4]OOP面对对象编程-17-多态

    多态是除封装和继承之外的另一个面象对象的三大特性之一. 多态的作用简而言之就是为程序做括展. 比如说在公司上班,每个月财务发放工资,同一个发工资的方法,在公司内不同的员工或是不同职位的员工,都是通过这 ...

  4. 跟着百度学PHP[4]OOP面对对象编程-14-克隆对象__clone()方法

    $b=clone ($a) #克隆a对象. <?php class Human { private $name; private $sex; private $age; function __c ...

  5. 跟着百度学PHP[4]OOP面对对象编程-13-魔术方法__set(),__get(),__isset(),__unset()

    __set() 在对象访问私有成员的时候自动被调用,达到了给你看,但是不能给你修改的效果!(在对象访问一个私有的成员的时候就会自动的调用该魔术方法) __get() 方法用于获取私有属性值.(在设置私 ...

  6. 跟着百度学PHP[4]OOP面对对象编程-10-静态关键字static

    使用static关键字可以将类中的成员标识为静态的,既可以用来标识成员属性,也可以用来标识成员方法. 以Person类为例,如果在person类中有一个“$country=’china’”的成员属性, ...

  7. 跟着百度学PHP[4]OOP面对对象编程-6-构造方法(__construct)和构析方法(__destruct)

    函数就是成员方法(方法有三:构造方法.成员方法.析构方法) 下面是两种方法. 构造方法和构析方法 00x1 构造方法 构造方法会在创建对象之后自动调用.其名称为__construct <?php ...

  8. 跟着百度学PHP[4]OOP面对对象编程-5-内部引用$this

    $this就是对象内部代表这个对象的引用 可以调用被封装的方法或者属性! <?php class Person{ private $name; "; var $sex; functio ...

  9. 跟着百度学PHP[4]OOP面对对象编程-4-对象成员的访问 ->

    使用一个减号一个尖括号->来达到访问对象成员. $object->方法 来看案例. <?php class Person{ private $name; "; var $s ...

随机推荐

  1. HTTP2.0的二进制分帧

    1.帧的类型: 在二进制分帧的结构中,头部有8个字节(64Bit),其中有一个字节(8Bit)来标志帧的类型: HTTP2.0规定了如下帧类型: DATA: 用于传输HTTP消息体 HEADERS:用 ...

  2. Java VM for IOS

    http://oss.readytalk.com/avian/ http://robovm.com/ http://www.xmlvm.org/overview/

  3. ecshop 邮件功能

    1.邮件服务器设置(配置好了,在本地和虚拟主机都可以使用) a.163邮箱配置 b.QQ邮箱配置 2.关注管理(客户关注了某以商品,就可以给客户发送邮件) 3.邮件订阅管理,数据表:ecs_email ...

  4. Only one statement is allowed per batch. A batch separator, such as 'GO', might be required between statements.

    When I added the file in VS I forgot to set Build Action = None from the file properties.

  5. struts2 拦截器和actioninvocation、PreResultListener

       Interceptor说明 Interceptor的接口定义没有什么特别的地方,除了init和destory方法以外,intercept方法是实现整个拦截器机制的核心方法.而它所依赖的参数Act ...

  6. PHP任意文件包含绕过截断新姿势

    前言 此方法是@l3m0n叔叔给我分享的,原文已经发布在90sec 我没有90sec的账号,所以自己实践一下,顺道安利给访问我博客的小伙伴. 适用情况 可以控制协议的情况下,如果%00无法截断包含,可 ...

  7. Effective Objective-C 2.0 — 第三条:多用字面量语法,少用与之等价的方法

    第三条:多用字面量语法,少用与之等价的方法 几个类:NSString  NSNumber  NSArray  NSDictionary 字面量语法是一种语法糖(syntactic sugar) NSS ...

  8. 浅谈JavaScript中的变量、参数、作用域和作用域链

    基本类型和引用类型 在JavaScript中有两种数据类型值.基本类型值和引用类型值.基本类型值指的是简单的数据段,而引用类型值指的是可能由多个值构成的对象.在JavaScript中有5种基本数据类型 ...

  9. Java多线程编程核心技术--定时器

    Timer类主要负责计划任务,也就是在指定的时间开始执行某一个任务. 方法schedule(TimerTask task, Date time) public class Task { private ...

  10. Redis安装及主从配置(转)

    一.何为Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有 ...