抽象類 接口 多態
* 抽象類是一種特殊的類, 接口是一種特殊的抽象類, 而多態就要使用到抽象類或是接口
* 聲明抽象類和接口,以及一些需要的技術
* 抽象類
* 什么是抽象方法?
* 定義:如果一個類中的方法,沒有方法體的方法就是抽象方法(就是一個方法沒有使用{}而直接使用分號結束)
* abstract function test(); //抽象方法
*function test(){ //有方法體,但方法體為空的
}
*如果一個方法是抽象方法,就必須使用abstract修飾
*為什么要使用抽象方法?
* 什么是抽象類?
* 1. 如果一個類中,有一個方法是抽象的則這個類就是抽象類
* 2. 如果一個類是抽象類,則這個類必須要使用abstract修飾
* 3. 抽象類是一種特殊的類,就是因為一個類中有抽象方法,其他不變。也可以在抽象類中聲明成員屬性,常量,非抽象的方法。
* 4. 抽象類不能實例化對象(不能通過抽象類去創建一個抽象類的對象)
總結:
一、抽象方法沒有方法體,不知道做什么的(沒寫功能)
二、對象中的方法和屬性都要通過對象來訪問,除常量和靜態的變量和方法, 而抽象類又不能創建對象,抽象類中的成員都不能直接訪問接口
作用:
要想使用抽象類,就必須使用一個類去繼承抽象類,而且要想使用這個子類,也就是讓子類可以創建對象,子類就必須不能再是抽象類, 子類可以重寫父類的方法(給抽象方法加上方法體)
抽象方法中的方法沒有方法體, 子類必須實現這個方法 (父類中沒寫具體的實現, 但子類必須有這個方法名)
就是在定義一些規范,讓子類按這些規范去實現自己的功能
目的:
就是要將你自己寫的程序模塊 加入 到原來已經寫好的程序中去 (別人寫好的程序,不能等你開發完一個小模塊,根據你的小模塊繼續向后開如)
abstract class FileDir {
var $filename;
var $time;
function getName(){
echo "獲取文件和目錄的名子<br>";
}
function getTime(){
echo "獲取文件和目錄的創建時間<br>";
}
abstract function getSize();
abstract function copy();
abstract function remove();
abstract function delete();
}
class FileClass extends FileDir {
function getSize(){
echo "獲取文件的大小<br>";
}
function copy(){
echo "復制文件<br>";
}
function remove(){
echo "移動文件<br>";
}
function delete(){
echo "刪除文件<br>";
}
}
class DirClass extends FileDir {
function getSize(){
echo "獲取目錄的大小<br>";
}
function copy(){
echo "復制目錄<br>";
}
function remove(){
echo "移動目錄<br>";
}
function delete(){
echo "刪除目錄<br>";
}
}
$fd= new DirClass;
$fd->getName();
$fd->getSize();
$fd->copy();
$fd->remove();
$fd->delete();
$fd->getTime();