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