學習PHP物件導向(九) 抽象類

2021-06-08 07:02:16 字數 2859 閱讀 2917

抽象類 

**  抽象類是一種特殊的類, 介面是一種特殊的抽象類, 而多型就要使用到抽象類或是介面

**  宣告抽象類和介面,以及一些需要的技術

**  抽象類

**      什麼是抽象方法?

**       定義:如果乙個類中的方法,沒有方法體的方法就是抽象方法(就是乙個方法沒有使用{}而直接使用分號結束)

*        

*        abstract function test();  //抽象方法

*   

*   function test()

**   如果乙個方法是抽象方法,就必須使用abstract修飾

**  為什麼要使用抽象方法?

*       

**   什麼是抽象類?

*    

*    1. 如果乙個類中,有乙個方法是抽象的則這個類就是抽象類

*    2. 如果乙個類是抽象類,則這個類必須要使用abstract修飾

*    3. 抽象類是一種特殊的類,就是因為乙個類中有抽象方法,其他不變。也可以在抽象類中宣告成員屬性,常量,非抽象的方法。

*    4. 抽象類不能例項化物件(不能通過抽象類去建立乙個抽象類的物件)**

*    一、抽象方法沒有方法體,不知道做什麼的(沒寫功能)

*    二、物件中的方法和屬性都要通過物件來訪問,除常量和靜態的變數和方法, 而抽象類又不能建立物件,抽象類中的成員都不能直接訪問

**  

*  作用:

*   要想使用抽象類,就必須使用乙個類去繼承抽象類,而且要想使用這個子類,也就是讓子類可以建立物件,子類就必須不能再是抽象類, 子類可以重寫父類的方法(給抽象方法加上方法體)

**  抽象方法中的方法沒有方法體, 子類必須實現這個方法 (父類中沒寫具體的實現, 但子類必須有這個方法名)**

* 就是在定義一些規範,讓子類按這些規範去實現自己的功能

** 目的: 就是要將你自己寫的程式模組 加入 到原來已經寫好的程式中去 (別人寫好的程式,不能等你開發完乙個小模組,根據你的小模組繼續向後開如)**/

例子:abstract class filedir

function gettime()

abstract function getsize();

abstract function copy();

abstract function remove();

abstract function delete();

}class fileclass extends filedir

function copy()

function remove()

function delete() 

}class dirclass extends filedir

function copy()

function remove()

function delete() 

}$fd= new dirclass;

$fd->getname();

$fd->getsize();

$fd->copy();

$fd->remove();

$fd->delete();

$fd->gettime();

下面是其他同志關於這個php抽象類得理解:

在自然語言中,我們理解抽象的概念是,乙個物體的一種大的描述,這種描述對某類物體來說是共有的特性。那麼在php中也是一樣的,我們把乙個類進行抽象,可以指明類的一般行為,這個類應該是乙個模板,它指示它的子方法必須要實現的一些行為。

php抽象類應用的定義:

abstract class classname

php抽象類應用要點:

1.定義一些方法,子類必須完全實現這個抽象中所有的方法

2.不能從抽象類建立物件,它的意義在於被擴充套件

3.抽象類通常具有抽象方法,方法中沒有大括號

php抽象類應用重點:

1.抽象方法不必實現具體的功能,由子類來完成

2.在子類實現抽象類的方法時,其子類的可見性必須大於或等於抽象方法的定義

3.抽象類的方法可以有引數,也可以為空

4.如果抽象方法有引數,那麼子類的實現也必須有相同的引數個數

php抽象類應用示例:

abstract public function_name(); //注意沒有大括號

作為演示,我們來實現乙個簡單的抽象類:計算矩形的面積。這個矩形可以從形狀類擴充套件。

< ?php   

abstract class shape   

class rectangle extends shape   

function get_area()   

}   

$shape_rect = new rectangle(20,30);   

$shape_rect->get_area();   

?>

< ?php  

abstract class shape  

class rectangle extends shape  

function get_area()   

}  $shape_rect = new rectangle(20,30);  

$shape_rect->get_area();  

?>

這也算是乙個簡單的例子,基本上可以說明php中抽象類的用法了,其他的不想多說了。個人覺得抽象類一般在大的專案才會用吧,因為我覺得它實在是要遵守的」規矩」太多了,用起來不方便!當然這只是我的意見。還想多說一些,php抽象類應用是單繼承的,也就是說你只能從乙個類繼承,而不能乙個類繼承了a類,又繼承b類,如果要實現這樣的功能,得使用介面相關的知識了,在此暫時不討論php介面的知識!一句話:單繼承多介面中!

Php物件導向 抽象類

php物件導向 抽象類 抽象類abstract 有一種類,只能被繼承,不能例項化物件。原因就是這個類的定義不完整。因為php支援定義一種,只有方法的宣告部分,而沒有方法的實現部分的不完整方法。如果某個類,包含了這種不完整的方法,就不是不完整類,也就不能例項化物件。不完整的類,稱之抽象類 所包含的不完...

PHP物件導向 抽象類

抽象類的特點 1 php5支援抽象類和抽象方法 2 定義的抽象類無法被例項化 3 任何乙個類裡面宣告了抽象方法,那麼這個類必須宣告為抽象類,乙個抽象類可以沒有抽象方法 4 被定義的抽象方法只能宣告其呼叫方式 引數 不能定義其具體的功能實現 5 繼承抽象類的子類必須實現父類 抽象類 所有的抽象方法,並...

PHP 物件導向 抽象類繼承抽象類

抽象類繼承另外乙個抽象類時,不用重寫其中的抽象方法。抽象類中,不能重寫抽象父類的抽象方法。這樣的用法,可以理解為對抽象類的擴充套件。下面的例子,演示了乙個抽象類繼承自另外乙個抽象類時,不需要重寫其中的抽象方法。abstract class user abstract class vipuser ex...