1.快速入門案例:
案例1:
new Camera(); $camera1->start(); $phone1=new Phone(); $phone1->start();?>
效果:
相機開始工作手機開始工作
來自
2.介面使用的基本文法:
interface介面名
{
//屬性
//方法
}
->介面中的方法沒有方法體
->如何?介面
Class 類名implements 介面名
{
}
**可以實現多個介面
Class 類名implements 介面名1,介面名2……
{
}
->介面的作用:聲明一些方法,供其它類來實現,介面還體現編程中我們希望的效果:高內聚低耦合 的特點 ,見圖1
深入討論-介面interface
什麼時候用介面?
1.定規範
2.定下規範,讓別的程式人來實現
3.當多個類,它們之間平級的關係,這些類都要去實習某個功能,只是實現方式不一樣
細節-interface
1.介面不能執行個體化;
2.介面中所有方法都不能有方法體;
3.一個類可以實現多個介面,但以","隔開;
4.介面中可以有屬性(區別於方法),但必須為常量,並且是public
案例2:
繼承的常量為:".IsUSB::A;//常量引用方法:介面名::常量名稱 }}$test1=new Test();$test1->aa(); echo "
沒有繼承的常量為:".IsUSB::A;//常量引用方法:介面名::常量名稱?>
5.介面的方法都是public的,即沒有protected,以及private,如果不寫,預設為public;
6.介面不能繼承其它類,但可以繼承其它介面;並且一個介面可以繼承多個介面,而一個類不能繼承多個類;一個類可以同時繼承某個類同時實現介面;
例如:inerface 介面名 extends 介面名1,介面名2…… 2
案例3:
"; }} class Test extends Class1 implements IsUSB03 { public function __construct() { echo "介面IsUSB03繼承了介面IsUSB01以及介面IsUSB02
"; } public function a() { echo "實現介面IsUSB01的a()
"; } public function b() { echo "實現介面IsUSB02的b()
"; } }$test1=new Test();$test1->a();$test1->b();$test1->TST(); ?> 結果:
介面IsUSB03繼承了介面IsUSB01以及介面IsUSB02
實現介面IsUSB01的a()
實現介面IsUSB02的b()
繼承類名為Class1
來自
其中,介面IsUSB03繼承了IsUSB01以及IsUSB02,因為是介面繼承介面,不需要實現方法,而,Test類引用了IsUSB03介面,則需要實現方法。
3.繼承與介面區別
實現介面可以看作,對單一繼承類的一種補充,同時,繼承是層次式的,不太靈活,多層次繼承如果修改某個類,就會打破繼承的平衡,而介面沒有那麼麻煩,較為靈活