麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > PHP > 正文

PHP抽象類和接口示例和區別

2024-09-04 11:46:52
字體:
來源:轉載
供稿:網友

PHP抽象類和接口是什么意思它們兩者有什么區別呢,在此小編來為各位介紹一篇關于PHP抽象類和接口的區別吧,具體的細節如下所示,希望文章能夠幫助到各位朋友。

抽象類(abstract class)和接口(interface)是面向對象很重要的概念,他們很相似,都是定義要實現的方法,但又有不同的使用場景,PHP的抽象類和接口有什么區別,看下面的示例。

接口(Interface)—— 定義行為

抽象類(Abstract  Class) —— 實現行為

具體類(class)——執行行為

一.接口

接口定義了某種函數的規范,聲明了所需的函數和常量,但是不能指定怎么實現。接口像是對具體類中方法的規范。

接口定義了發生某一行為需要的方法、方法名。然后允許具體的類來實現這些方法。。

注意:接口類不能定義類成員。定義的方法必須在實現的類中出現。

  1. interface 接口名 
  2. function 方法1( ); 
  3. function 方法2( ); 
  4. //實現接口 
  5. class 類名 implements 接口名 
  6.  方法1( ); 
  7. 方法2( ); 

二.抽象類

抽象類是實例化的類,只能作為被其他類基層的基類。例如,可以寫一個關于read的抽象類,然后電子閱讀,紙質閱讀來繼承read抽象類。

  1. abstract class 類名 
  2. 各種方法 

抽象類可以確保一致性,因為任何派生類都必須實現從該抽象類繼承所有抽象方法,如果沒有實現,那將產生錯誤。

應該用抽象類?還是 接口?

這是一個問題

** 如果要建一個類模型,這個模型將由一些緊密相關的對象采用,使用抽象類。如果模型將由不太相關的對象采用,用接口。

** 如果一個具體class將從多個來源繼承行為,用接口。php類可以繼承多個接口,但是不能繼承多個抽象類。

** 如果所有的類都要共享一個公共的行為實現,用抽象類,并在其中實現該行為。。先用子類繼承一個抽象類,繼承后的子類能夠實現原先的行為。。

摘: _______

事物的出現,總是有它出現的理由(需求)! 

但是,事物的生存,需要有適應性(靈活)! 

比如:長頸鹿,脖子長,這是個抽象的概念; 

能吃草(是非肉食性動物的特征,接口)。

所以,當需要描述長頸鹿的時候,我們就可以用接口(非肉食性動物)和抽象(脖子長)的方法來定義它, 

然后,具體是什么種類/或者顏色的長頸鹿,怎么個吃草法,這就是具體類了

PHP接口類

首先看接口,定一個接口類,interface class:

  1. namespace frontend/models; 
  2.  
  3. interface TestInterface 
  4.     public function cloud(); 
  5.  
  6.     public function sky(); 
  7.  
  8.     public static function color($color); 

在PHP中,接口只能定義方法(或靜態方法),但是不能實現具體的方法。在PhpStorm中如果寫具體的方法會提示錯誤。接口比較嚴格的定義需要實現什么方法,只寫要實現的方法就行了,不需要具體實現,或定義成員變量。

使用接口:

  1. namespace frontend/models; 
  2.  
  3. class Test implements TestInterface 
  4.     public function cloud() 
  5.     { 
  6.         echo 'Cloud....'
  7.     } 
  8.  
  9.     public function sky() 
  10.     { 
  11.  
  12.     } 
  13. //Vevb.com 
  14.     public static function color($color){ 
  15.  
  16.     } 

繼承接口類,必須實現接口定義的每個方法,否則也會報錯,這就是PHP的接口,嚴格定義實現哪些方法,并且必須在子類中都實現.

PHP抽象類

我們定義一個抽象類:

  1. abstract class Testabstract 
  2.     public $abstract = 'abstract'
  3.     abstract function hehe(); 
  4.  
  5.     public function hehe2() 
  6.     { 
  7.         echo 'hehe2'
  8.     } 

這里有兩個方法,一個是用abstract修飾的,這樣寫表示該方法是子類必須實現的,而抽象類中只能定義不能具體實現,一個方法是普通的成員方法,而且有具體實現,子類也可以重寫.

  1. class ab extends Testabstract 
  2.     public function hehe() 
  3.     { 
  4.         echo 'hehe'
  5.     } 

子類繼承抽象類,只需實現抽象類中定義的抽象方法,抽象類可以定義成員變量,而接口不行.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产午夜三级一区二区三桃花影视 | 亚洲国产超高清a毛毛片 | 国产a一级片 | 性大片1000免费看 | 国产日产精品一区二区三区四区 | 国产午夜精品理论片a级探花 | 亚洲精品动漫在线观看 | 在线2区| 国内免费视频成人精品 | 久久久久久久久久久久网站 | 中国老女人一级毛片视频 | 久久毛片免费观看 | 黄污免费网站 | 中国成人在线视频 | 国产毛毛片一区二区三区四区 | 欧美日韩a∨毛片一区 | 中国黄色一级生活片 | 国产一区二区视频网站 | 日韩午夜片| 91精品国产综合久久久动漫日韩 | 免费日本一区二区 | 欧美不卡| 国产影院一区 | 国产精品色在线网站 | 色淫网站免费视频 | 久久久久久久久久久一区 | 娇喘视频在线观看 | 99欧美精品 | 激情久久精品 | 亚洲精久| 黄网站在线免费看 | 免费看黄色一级大片 | 久成人 | 一级成人免费 | 国产乱一区二区三区视频 | 黑人一区二区三区四区五区 | 亚洲综人网 | 国产精品刺激对白麻豆99 | 日本精品视频一区二区三区四区 | 国内毛片视频 | 久久人人爽人人爽人人片av免费 |