20.PHP5 接口技术 PHP
与大多数面向对象编程语言一样,不支持多重继承.也就是说每个类只能继承一个父
类。为了解决这个问题,PHP
引入了接口,接口的思想是指定了一个实现了该接口的类必须
实现的一系列方法。接口是一种特殊的抽象类,抽象类又是一种特殊的类,所以接口也是一
种特殊的类,为什么说接口是一种特殊的抽象类呢?如果一个抽象类里面的所有的方法都是
抽象方法,那么我们就换一种声明方法使用“接口”;也就是说接口里面所有的方法必须都是
声明为抽象方法,另外接口里面不能声明变量,而且接口里面所有的成员都是public
权限的。
所以子类在实现的时候也一定要使用public 权限实限。
声明一个类的时候我们使用的关键字是“class”,而接口一种特殊的类,使用的关键字
是“interface”;
类的定义:class 类名{ … } ,接口的声明:interface 接口名{ … }
代码片段

PHP5接口语法如下:
声明一个类的时候我们使用的关键字是”class”,而接口一种特殊的类,使用的关键字是“interface”;

复制代码 代码如下:

类的定义:class 类名{ … },接口的声明:interface 接口名{ …}

<?
abstract class Demo{
var $test;
abstract function fun1();
abstract function fun2();
function fun3(){
… .
}
}
$demo=new Demo();
//抽象类为能产生实例对象,所以这样做是错的,实例化对象交给子类
class Test extends Demo{
function fun1(){

}
function fun2(){

}
}
$test=new Test(); //子类可以实例化对象,因为实现了父类中所有抽象方法
?>

具体PHP5抽象类的代码如下:

上例中定义了一个接口“one”,里面声明了两个抽象方法“fun1”和“fun2”,因为接
口里面所有的方法都是抽象方法,所以在声明抽象方法的时候就不用像抽象类那样使用
“abstract”这个关键字了,默认的已经加上这个关键字,另外在接口里边的“public”这个访
问权限也可以去掉,因为默认就是public
的,因为接口里所有成员都要是公有的,所在对于
接口里面的成员我们就不能使用“private”的和“protected”的权限了,都要用public
或是默
认的。另外在接口里面我们也声明了一个常量“constant“,
因为在接口里面不能用变量成
员,所以我们要使用const 这个关键字声明。
因为接口是一种特殊的抽象类,里面所有的方法都是抽象方法,所以接口也不能产生实
例对象;它也做为一种规范,所有抽象方法需要子类去实现。
我们可以使用“extends“关键字让一个接口去继承另一个接口;
代码片段

 代码如下

复制代码 代码如下:

abstract class AbstractClass {     

<?php
//使用”extends”继承另外一个接口
interface Two extends One{
function fun3();
function fun4();
}
?>

   abstract public function test();     

而我们定义一接口的子类去实现接口中全部抽象方法使用的关键字是“implements”,而
不是我们前面所说的“extends”;
代码片段

}     

复制代码 代码如下:

    

<?php
//使用“implements”这个关键字去实现接口中的抽象方法
class Three implements One{
function fun1(){
… .
}
function fun2(){
… .
}
}
//实现了全部方法,我们去可以使用子类去实例化对象了
$three=new Three();
?>

class ImplementedClass extends AbstractClass {     

我们也可以使用抽象类,去实现接口中的部分抽象方法,但要想实例化对象,这个抽象
类还要有子类把它所有的抽象方法都实现才行;
在前面我们说过,PHP
是单继承的,一个类只能有一父类,但是一个类可以实现多个接
口,就相当于一个类要遵守多个规范,就像我们不仅要遵守国家的法律,如果是在学校的话,
还要遵守学校的校规一样;
代码片段

   public function test() {     

复制代码 代码如下:

       echo “ImplementedClass::test() called. “;     

<?php
//使用implements实现多个接口
class Four implemtns 接口一, 接口二, … .{
//必须把所有接口中的方法都要实现才可以实例化对象。
}
?>

   }     

PHP
中不仅一个类可以实现多个接口,也可以在继承一个类的同时实现多个接口,一定
要先继承类再去实现接口;
代码片段

}     

复制代码 代码如下:

    

<?php
//使用extends继承一个类,使用implements实现多个接口
class Four extends 类名一implemtns 接口一, 接口二, … .{
//所有接口中的方法都要实现才可以实例化对象
… … … ..
}
?>

$o = new ImplementedClass;     

您可能感兴趣的文章:

$o->test();    

实例二

 代码如下

interface displayable {     

  function display();     

}     

interface printable {     

  function doprint();     

}     

    

class foo implements displayable,printable {     

  function display() {     

    // code     

  }   function doprint() {     

    // code     

  }     

}    

 

抽象类和PHP5接口的引入使PHP成了一个完全面向对象的语
//定义一个接口使用interface关键字,“One”为接口名称

 代码如下

interface One
{
    //定义一个常量
    const constant = ‘constant value’;

    //定义了一个抽象方法”fun1”
    public function fun1();

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图