當前位置:首頁 > PHP教程 > php應用 > 列表

PHP中抽象類、接口的區別與選擇分析

發布:smiling 來源: PHP粉絲網  添加日期:2019-11-05 15:11:31 瀏覽: 評論:0 

本文實例分析了PHP中抽象類、接口的區別與選擇。分享給大家供大家參考,具體如下:

區別:

1、對接口的使用是通過關鍵字implements。對抽象類的使用是通過關鍵字extends。當然接口也可以通過關鍵字extends繼承。

2、接口中不可以聲明成員變量(包括類靜態變量),但是可以聲明類常量。抽象類中可以聲明各種類型成員變量,實現數據的封裝。(另JAVA接口中的成員變量都要聲明為public static final類型)

  1. <?php 
  2.  
  3. abstract class Father { 
  4.  
  5.   function meth1() { 
  6.  
  7.     echo "meth1...<br>"
  8.  
  9.   } 
  10.  
  11.   abstract function meth2(); 
  12.  
  13.   public $var1="var1"
  14.  
  15.   public static $var2="var2"
  16.  
  17.   const Var3="Var3"
  18.  
  19.  
  20. class Son extends Father { 
  21.  
  22.   function meth2() { 
  23.  
  24.     echo "meth2 of Son...<br>"
  25.  
  26.   } 
  27.  
  28.  
  29. $s=new Son(); 
  30.  
  31. echo $s->var1."<br>"
  32.  
  33. echo Father::$var2."<br>"
  34.  
  35. echo Father::Var3."<br>"
  36.  
  37. Interface IFather { 
  38.  
  39.   //public $iVar1="iVar1"; 此處接口定義中不能包含成員變量 
  40.  
  41.   //public static $iVar2="iVar2"; 此處接口定義中不能包含靜態變量 
  42.  
  43.   const iVar3="iVar3"
  44.  
  45.   function iMeth1(); 
  46.  
  47.  
  48. Class ISon implements IFather { 
  49.  
  50.   function iMeth1() { 
  51.  
  52.     echo "iMeth1...<br>"
  53.  
  54.   } 
  55. //phpfensi.com 
  56.  
  57. $is=new ISon(); 
  58.  
  59. echo IFather::iVar3; 
  60.  
  61. ?> 

3、接口沒有構造函數,抽象類可以有構造函數。

4、接口中的方法默認都是public類型的,而抽象類中的方法可以使用private,protected,public來修飾。

5、一個類可以同時實現多個接口,但一個類只能繼承于一個抽象類。

抽象類還是接口

1. 如果要創建一個模型,這個模型將由一些緊密相關的對象采用,就可以使用抽象類。如果要創建將由一些不相關對象采用的功能,就使用接口。

2. 如果必須從多個來源繼承行為,就使用接口。

3. 如果知道所有類都會共享一個公共的行為實現,就使用抽象類,并在其中實現該行為。

Tags: PHP抽象類 PHP接口

分享到:

天气网首页彩吧