php 接口技术

来源:互联网 发布:sql 创建主键约束 编辑:程序博客网 时间:2024/06/05 19:07

什么是接口?

先来看抽象类:抽象类是不能被实例化的类,任何一个类,如果它里面至少有一个方法被声明为抽象的,那么这个类就必须被声明为抽象的。

被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。

(当然抽象类中也可以没有抽象方法,但是含有抽象方法的类必须被定义为抽象类)。

如:abstract class 类名{

属性1;

属性2;

非抽象方法(){}

抽象方法1();

抽象方法2();

}

设想一下,将上述抽象类中的“实在的成员”删除,即删除那些非抽象的成员,那么该抽象类中就只有抽象方法:

如:abstract class 类名{

抽象方法1();

抽象方法2();

}

由此,可以理解为:这个类“太抽象了”,几乎自己什么都没做,就是让别人来做;

那么:接口就与这个“太抽象的类”类似;

    接口,就是规定,里面只能放“抽象方法”和“常量”的一种类似类的结构体;

因此,接口是“比抽象类更抽象的”一种语法。



接口的定义形式(interface):

如:interface 接口名{

常量1;

常量2;

...........

抽象方法1;

抽象方法2;

...........

}

说明:1.可见接口中只有“常量”和“抽象方法”两种成员;

    2.接口常量的使用形式为:接口名::常量名称;

    3.接口中的抽象方法不要使用abstract修饰,也不需要使用访问控制符修饰,因为其天然就是public修饰;

例:interface A{

const PI = 3.14;

const CC1 = 1 ;

function Show1();//抽象方法,无形参

function Func2($p1,$p2);//抽象方法,2个形参

}


为什么需要接口?

面向对象的编程思想是对“现实世界”的描述,而现实世界往往是多继承关系;

但:

出于降低类与类之间的关系的复杂度的考虑,将PHP语言设计为单继承的;但这样就无法表达出现实世界的多继承特性;

所以:

接口就是对没有多继承的类之间关系的一个补充;因为接口可以实现“多继承”,只是此时不称为“继承”而是称为“实现”而已;

即:接口1——》类1;

就称为:类1实现的接口1;

其本质:是类1中有了接口1中的“特征信息”;

例:

<?php/*定义Player接口*接口中的抽象方法不要使用abstract修饰,也不需要使用访问控制符修饰,因为其天然就是public修饰; * */interface Player{    function play();    function stop();    function next();    function prev();}/*定义USBset接口*  接口,就是规定,里面只能放“抽象方法”和“常量”的一种类似类的结构体; * */interface USBset{    const USBWidth = 12;    const USBHeight = 5;    function dataIn();//数据输入    function dataOut();//数据输出}/*这里MP3Player类必须实现Player,USBset中的所有方法*php语言中一个类不可以继承多个类,但是一个类可以继承多个接口 * */class MP3Player implements Player,USBset {    function Play(){}    function stop(){}    function next(){}    function prev(){}    function dataIn(){}    function dataOut(){}}


0 0
原创粉丝点击