首頁  >  文章  >  後端開發  >  PHP中抽象類別和介面的用法

PHP中抽象類別和介面的用法

小云云
小云云原創
2018-03-27 15:36:591785瀏覽

本文主要跟大家分享PHP中抽象類別和介面的用法,希望能幫助大家,我們先來跟大家分享抽象方法的概念。

1. 抽象方法

在類別中,沒有方法體的方法就是抽象方法。

abstract 可見性 function 方法名稱(參數1,.....);      // 若未顯示指定可見性,則預設為public

#如:

public function hello($args);
abstract function work();            // 修饰符abstract,也可以省略

2. 抽象類別

abstract class 類別名稱{

        屬性;

##         屬性;

##   ;

        抽象方法;

#}

抽象類別的特性:

  • 抽象類別不能實例化,只能被繼承。

  • 抽象類別不一定有抽象方法,有抽象方法的類,一定是抽象類別。

抽象方法的可見性不能是private

  • 抽象方法在子類別中,需要重寫。

  • 什麼時候需要用抽象類別?

  • 有個方法,方法體不知如何寫,子類別中還必須有這個方法時,封裝成抽象方法,類別為抽象類別。

控制子類別中必須封裝某些方法時,可以用抽象方法。

當需要控制類別只能被繼承,不能被實例化時。

範例:

    宣告一個人類,有一個抽象方法,工作。

    宣告一個php講師類,重寫方法工作。

  abstract class People{
        protected $age=22;
        public $height=1.70;
        abstract function work();
    }
    class PhpTeacher extends People{
        function work(){
            echo "真不是php";
        }
    }

######3. 介面############如果一個類別中,所有的方法都是抽象方法,且沒有成員屬性,則這個類別被稱為介面(interface)。 ###
interface Common{
    abstract function work();
    abstract function test($args);
}
###介面的作用:雖然PHP的類別是單一繼承,但可以透過介面來實現多重繼承。 ######介面的繼承(extends):###
  • 介面繼承介面  interface 介面名稱extends 父介面名稱

注意:類別的繼承是單繼承(只能有一個父類別),但介面的繼承卻是多繼承,類別對介面的實作也是多實作。

介面的實作(implements):

  • 類別實作介面     class 類別名稱 implements 介面名稱1,介面名稱2, ...

#繼承類別同時實作介面:

  • 類別繼承父類別同時實作介面   class 類別名稱 extends 父類別名稱implements 介面名稱

#4. 抽象類別和介面的區別

  • #介面是一種特殊的抽象類,介面中只包含抽象方法,沒有成員屬性。

  • 類別實作(implements)介面時,必須完全實作介面中的所有方法;類別繼承(extends)抽象類別時,只需對需要用到的抽象方法進行重寫。

  • 抽象類別只能單繼承,但介面卻是多繼承,類別對介面的實作也是多實作。

相關推薦:

php抽象類別詳解

PHP中抽象類別與介面詳解

PHP中的 抽象類別與介面

#

以上是PHP中抽象類別和介面的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn