如何理解PHP抽象類和抽象方法

本篇內(nèi)容介紹了“如何理解PHP抽象類和抽象方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

創(chuàng)新互聯(lián)建站主營揭東網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,重慶App定制開發(fā),揭東h5小程序開發(fā)搭建,揭東網(wǎng)站營銷推廣歡迎揭東等地區(qū)企業(yè)咨詢

如何理解PHP抽象類和抽象方法

在上一篇文章中介紹了接口,其中講到了可以把接口理解成一個特殊的抽象類,那么什么是抽象類,想要了解什么是抽象類我們首先要講什么是抽象方法,抽象類和抽象方法的出現(xiàn),主要還是想方便類的繼承,那接下來我們就來看一下什么是抽象方法,什么是抽象類。

什么是抽象方法

在我們之前的學習中,一個類可以有多個子類,我們定義抽象方法就是為了方便類的繼承。我們類里面定義的沒有方法體的方法就是抽象法。那么什么是方法體?方法體指的就是類聲明的時候大括號以及大括號其中的內(nèi)容,沒有方法體指的就是沒有這個內(nèi)容,而是直接在聲明的時候放法明后加上分號結束。這就叫做抽象方法。

需要注意的是,抽象方法在聲明的時候要通過關鍵字“abstract”來進行修飾。它的語法格式如下:

abstract 訪問權限修飾符 function 方法名1(參數(shù)列表);
abstract 訪問權限修飾符 function 方法名2(參數(shù)列表);

抽象方法的理解還是比較簡單的,接下來我們看一下什么是抽象類。

什么是抽象類

通過上文已經(jīng)知道了什么是抽象方法,那么抽象類的定義其實也很好理解,當一個類的里面有一個方法是抽象方法的時候,我們定義這個類就是抽象類。同時抽象類也是需要使用“abstract”關鍵字來修飾的,在抽象類里面可以有不是抽象方法的成員屬性,但是一旦有一個方法是抽象方法,那這個類就是抽象類。

其中需要注意的是,抽象類的成員方法并不全是抽象方法,哪些不是抽象方法的成員方法和屬性訪問權限不能是private,抽象類中的方法也是需要被子類繼承的。

下面給大家實例看一下:

abstract class demo{
var $test;
abstract function fun1();
abstract function fun2();
}

抽象類的特點

  • 抽象類和抽象方法都需要用abstract修飾;

  • 抽象方法必須在抽象類中,抽象類中可以沒有抽象方法;

  • 抽象類不能直接創(chuàng)造對象(實例化);

  • 抽象類的子類如果重寫所有抽象方法,那么就是一個具體的類;抽象類的子類不重寫所有抽象方法,那么子類還是一個抽象類;

抽象類中含有不能被實現(xiàn)的抽象方法,就表示抽象類不能被實例化,那就創(chuàng)建不了對象,因此我們無法直接使用它。那既然無法直接使用它,我們使用抽象類能夠解決什么問題呢?

接下來我們通過實例來看一下,定義一個抽象類,然后使用另一個類來繼承這個抽象類并實現(xiàn)抽象類中的抽象方法。

示例如下:

<?php
    abstract class father{
        public $study = '好好學習<br>';
        public $study1 = '天天向上<br>';
        abstract function title();
        abstract function output();
    }
    class Demo extends father{
        public function title(){
            echo '福如東海,壽比南山。';
        }
        public function output(){
            echo $this -> study.$this -> study1;
        }
    }
    $obj = new Demo();
    $obj -> output();
    $obj -> title();
?>

輸出結果:

如何理解PHP抽象類和抽象方法

由上述實例,我們實現(xiàn)了定義一個抽象類,然后使用另一個類來繼承這個抽象類并實現(xiàn)抽象類中的抽象方法。

就像上文說的,前面的文章中講到了PHP接口的相關知識,里面說道可以把接口理解成一個特殊的抽象類,那么既然特殊的話PHP接口和抽象類有什么區(qū)別和相同點呢?下面我們就來盤點一下。這里推薦大家可以先看《五分鐘帶你看PHP中的接口interface聲明與應用(實例詳解)》其中介紹了PHP接口。

PHP接口和抽象類的區(qū)別

  • 抽象類可以有屬性、普通方法、抽象方法,但接口不能有屬性、普通方法、可以有常量。

  • 抽象類內(nèi)未必有抽象方法,但接口內(nèi)一定會有“抽象”方法。

  • 抽象類用abstract關鍵字在類前聲明,且有class聲明為類,接口是用interface來聲明,但不能用class來聲明,因為接口不是類。

  • 抽象類是用extends關鍵字讓子類繼承父類后,在子類實現(xiàn)詳細的抽象方法。而接口則是用implements讓普通類在類里實現(xiàn)接口的詳細方法,且接口可以一次性實現(xiàn)多個方法,用逗號分開各個接口就可。

PHP接口和抽象類的相同點

  • 都是用于聲明某一種事物,規(guī)范名稱、參數(shù),形成模塊,未有詳細的實現(xiàn)細節(jié)。

  • 都是通過類來實現(xiàn)相關的細節(jié)工作。

  • 語法上,抽象類的抽象方法與接口一樣,不能有方法體,即{}符號。

  • 都可以用繼承,接口可以繼承接口形成新的接口,抽象類可以繼承抽象類從而形成新的抽象類。

“如何理解PHP抽象類和抽象方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質量的實用文章!

當前題目:如何理解PHP抽象類和抽象方法
當前路徑:http://bm7419.com/article24/gihoce.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計、域名注冊服務器托管、品牌網(wǎng)站設計、網(wǎng)站內(nèi)鏈、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設