PHP的抽象類別、介面的區別和選擇

來源:互聯網
上載者:User
本篇文章介紹的內容是PHP的抽象類別、介面的區別和選擇,現在分享給大家,有需要的朋友可以參考一下

區別:

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

2、介面中不可以聲明成員變數(包括類靜態變數),但是可以聲明類常量。抽象類別中可以聲明各種類型成員變數,實現資料的封裝。


[php] view plain copy


<?php   abstract class Father {      function meth1() {          echo "meth1...<br>";      }      abstract function meth2();      public $var1="var1";      public static $var2="var2";      const Var3="Var3";  }  class Son extends Father {      function meth2() {          echo "meth2 of Son...<br>";      }  }  $s=new Son();  echo $s->var1."<br>";  echo Father::$var2."<br>";  echo Father::Var3."<br>";      Interface IFather {      //public $iVar1="iVar1";        此處介面定義中不能包含成員變數      //public static $iVar2="iVar2"; 此處介面定義中不能包含靜態變數      const iVar3="iVar3";      function iMeth1();  }  Class ISon implements IFather {      function iMeth1() {          echo "iMeth1...<br>";      }  }  $is=new ISon();  echo IFather::iVar3;  ?>

3、介面沒有建構函式,抽象類別可以有建構函式。

4、介面中的方法預設都是public類型的,而抽象類別中的方法可以使用private,protected,public來修飾。

5、一個類可以同時實現多個介面,但一個類只能繼承於一個抽象類別。


抽象類別還是介面。(主要區別就是抽象只能一個繼承,而interface介面則可以多個繼承)

  • 如果要建立一個模型,這個模型將由一些緊密相關的對象採用,就可以使用抽象類別。如果要建立將由一些不相關對象採用的功能,就使用介面。

  • 如果必須從多個來源繼承行為,就使用介面。

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


  • 主要區別就是抽象只能一個繼承,而interface介面則可以多個繼承

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.