如何理解PHP中抽象類和抽象方法?(附代碼)

今天在這裏和大家談談關於PHP面向對象中抽象類和抽象方法的內容,簡單的來說,PHP中抽象類是一種不能被實例化的類,只能作爲其他類的父類來使用,抽象方法則不能帶方法體,下面我們就來看看具體的示例。

 

面向對象的抽象方法和抽象類:

所有子類必須繼承父類的方法,但是繼承的時候具有不確定性,必須對父類的方法進行重寫,這個時候我們就把這個被重寫的方法定義成抽象方法,抽象方法不需要有方法體。這個類也就是抽象abstruct。

抽象類是一種不能被實例化的類,只能作爲其他類的父類來使用!

如果一個類中,有一個方法是抽象的,則這個類就是抽象類。

如果一個類是抽象類,則這個類必須使用abstract修飾。

抽象類是一種特殊的類,接口是一種特殊的抽象類,多態就要使用到抽象類或接口!

測試代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

abstract class A{

    public $name = 'zym';

    abstract function show();

}

//$a = new A();//會報錯

class B extends A{

    public function show(){

        echo '繼承父類的抽象方法並進行重寫';

    }

}

$b = new B();

$b->show();

抽象類和普通類相似,包含成員變量和成員方法,兩者的區別在於:抽象類至少要包含一個抽象方法,抽象方法沒有方法體,其功能的實現只能在子類中完成。

代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

//定義一個名爲【交通工具】的類

abstract class Vehicle{

    private $name;//名稱

    private $price;//價格

    private $brand;//品牌

    abstract function run();

}

class Truck extends Vehicle{

    function run(){

        echo '卡車在路上跑';

    }

}

class Plane extends Vehicle{

    public function run(){

        echo '飛機在天上飛';

    }

}

$plane = new Plane;

$plane->run();

注意:抽象方法一定不能帶方法體!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章