欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php面向?qū)ο笕ヂ?(十四) php5接口技術(shù)

 更新時間:2009年09月30日 22:38:51   作者:  
PHP 與大多數(shù)面向?qū)ο缶幊陶Z言一樣,不支持多重繼承.也就是說每個類只能繼承一個父類。
20.PHP5 接口技術(shù)
PHP 與大多數(shù)面向?qū)ο缶幊陶Z言一樣,不支持多重繼承.也就是說每個類只能繼承一個父
類。為了解決這個問題,PHP 引入了接口,接口的思想是指定了一個實現(xiàn)了該接口的類必須
實現(xiàn)的一系列方法。接口是一種特殊的抽象類,抽象類又是一種特殊的類,所以接口也是一
種特殊的類,為什么說接口是一種特殊的抽象類呢?如果一個抽象類里面的所有的方法都是
抽象方法,那么我們就換一種聲明方法使用“接口”;也就是說接口里面所有的方法必須都是
聲明為抽象方法,另外接口里面不能聲明變量,而且接口里面所有的成員都是public 權(quán)限的。
所以子類在實現(xiàn)的時候也一定要使用public 權(quán)限實限。
聲明一個類的時候我們使用的關(guān)鍵字是“class”,而接口一種特殊的類,使用的關(guān)鍵字
是“interface”;
類的定義:class 類名{ … } ,接口的聲明:interface 接口名{ … }
代碼片段
復(fù)制代碼 代碼如下:

<?
abstract class Demo{
var $test;
abstract function fun1();
abstract function fun2();
function fun3(){
… .
}
}
$demo=new Demo(); //抽象類為能產(chǎn)生實例對象,所以這樣做是錯的,實例化對象交給子類
class Test extends Demo{
function fun1(){

}
function fun2(){

}
}
$test=new Test(); //子類可以實例化對象,因為實現(xiàn)了父類中所有抽象方法
?>

上例中定義了一個接口“one”,里面聲明了兩個抽象方法“fun1”和“fun2”,因為接
口里面所有的方法都是抽象方法,所以在聲明抽象方法的時候就不用像抽象類那樣使用
“abstract”這個關(guān)鍵字了,默認的已經(jīng)加上這個關(guān)鍵字,另外在接口里邊的“public”這個訪
問權(quán)限也可以去掉,因為默認就是public 的,因為接口里所有成員都要是公有的,所在對于
接口里面的成員我們就不能使用“private”的和“protected”的權(quán)限了,都要用public 或是默
認的。另外在接口里面我們也聲明了一個常量“constant“, 因為在接口里面不能用變量成
員,所以我們要使用const 這個關(guān)鍵字聲明。
因為接口是一種特殊的抽象類,里面所有的方法都是抽象方法,所以接口也不能產(chǎn)生實
例對象;它也做為一種規(guī)范,所有抽象方法需要子類去實現(xiàn)。
我們可以使用“extends“關(guān)鍵字讓一個接口去繼承另一個接口;
代碼片段
復(fù)制代碼 代碼如下:

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

而我們定義一接口的子類去實現(xiàn)接口中全部抽象方法使用的關(guān)鍵字是“implements”,而
不是我們前面所說的“extends”;
代碼片段
復(fù)制代碼 代碼如下:

<?php
//使用“implements”這個關(guān)鍵字去實現(xiàn)接口中的抽象方法
class Three implements One{
function fun1(){
… .
}
function fun2(){
… .
}
}
//實現(xiàn)了全部方法,我們?nèi)タ梢允褂米宇惾嵗瘜ο罅?
$three=new Three();
?>

我們也可以使用抽象類,去實現(xiàn)接口中的部分抽象方法,但要想實例化對象,這個抽象
類還要有子類把它所有的抽象方法都實現(xiàn)才行;
在前面我們說過,PHP 是單繼承的,一個類只能有一父類,但是一個類可以實現(xiàn)多個接
口,就相當(dāng)于一個類要遵守多個規(guī)范,就像我們不僅要遵守國家的法律,如果是在學(xué)校的話,
還要遵守學(xué)校的校規(guī)一樣;
代碼片段
復(fù)制代碼 代碼如下:

<?php
//使用implements實現(xiàn)多個接口
class Four implemtns 接口一, 接口二, … .{
//必須把所有接口中的方法都要實現(xiàn)才可以實例化對象。
}
?>

PHP 中不僅一個類可以實現(xiàn)多個接口,也可以在繼承一個類的同時實現(xiàn)多個接口,一定
要先繼承類再去實現(xiàn)接口;
代碼片段
復(fù)制代碼 代碼如下:

<?php
//使用extends繼承一個類,使用implements實現(xiàn)多個接口
class Four extends 類名一implemtns 接口一, 接口二, … .{
//所有接口中的方法都要實現(xiàn)才可以實例化對象
… … … ..
}
?>

相關(guān)文章

最新評論