抽象類
** 抽象類是一種特殊的類, 介面是一種特殊的抽象類, 而多型就要使用到抽象類或是介面
** 宣告抽象類和介面,以及一些需要的技術
** 抽象類
** 什麼是抽象方法?
** 定義:如果乙個類中的方法,沒有方法體的方法就是抽象方法(就是乙個方法沒有使用{}而直接使用分號結束)
*
* 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...