91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-10-26 16:06:18 來源:億速云 閱讀:103 作者:iii 欄目:編程語言

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

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

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

什么是抽象方法

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

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

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

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

什么是抽象類

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

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

下面給大家實例看一下:

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

抽象類的特點

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

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

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

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

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

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

示例如下:

<?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抽象類和抽象方法

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

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

PHP接口和抽象類的區別

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

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

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

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

PHP接口和抽象類的相同點

  • 都是用于聲明某一種事物,規范名稱、參數,形成模塊,未有詳細的實現細節。

  • 都是通過類來實現相關的細節工作。

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

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

“如何理解PHP抽象類和抽象方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

湘乡市| 嘉黎县| 云阳县| 连云港市| 色达县| 三台县| 洛扎县| 沙坪坝区| 青神县| 栾川县| 广灵县| 岑巩县| 蒙阴县| 石屏县| 长子县| 沁阳市| 印江| 于都县| 吴旗县| 五原县| 宁国市| 泸溪县| 姚安县| 敦煌市| 隆德县| 阿克陶县| 香河县| 巴彦淖尔市| 九台市| 庄河市| 宝鸡市| 蒲江县| 泰州市| 高雄市| 宁乡县| 启东市| 四子王旗| 汉沽区| 梓潼县| 甘孜| 安福县|