PHP抽象類 無法例項化

2021-07-16 12:45:16 字數 2949 閱讀 2412

類前加 abstract, 此類就成為抽象類,無法例項化.

舉例:

春秋戰國時期,燕零七 飛行器專家,能工巧匠.他寫了乙份圖紙---【飛行器製造術】

飛行器秘製圖譜:

他的孫子問: 發動機怎麼造呢?

燕零七眼望夕陽: 我是造不出來,但我相信後代有人造出來

// 燕零七的構想,當時的科技造不出來,即這個類只能在圖紙化,無法例項化.

// 此時這個類沒有具體的方法去實現,還太抽象.

// 因此我們把他做成乙個抽象類

abstract class flyidea

fatal error: abstract function flyidea::engine() cannot contain body

*/}

/*----------------------抽象類不能 new 來例項化----------------------

下面這行是錯誤的

$kongke = new flyidea();

cannot instantiate abstract class flyidea*/

// ------------1----------到了明朝,萬戶用火箭解決了發動機的問題----------------------

abstract class rocket extends flyidea

// 繼承自父類,但是萬戶實現不了平衡舵,(還有乙個抽象方法)

// 因此平衡舵對於rocket類來說,

// 還是抽象的,

// 類也是抽象的 因此類加乙個abstract}

/*------------1----------到了現代,燕十八親自製作飛行器----------------------

這個fly類中,所以抽象方法,都已經實現了,不再是夢想.

*/

class fly extends rocket

public function blance()

public function start()

}} $apache = new fly();

$apache->start();

/*有力一扔

兩個紙翼保持平衡~~~平穩飛行

兩個紙翼保持平衡~~~平穩飛行

兩個紙翼保持平衡~~~平穩飛行

兩個紙翼保持平衡~~~平穩飛行

兩個紙翼保持平衡~~~平穩飛行

兩個紙翼保持平衡~~~平穩飛行

兩個紙翼保持平衡~~~平穩飛行

兩個紙翼保持平衡~~~平穩飛行

兩個紙翼保持平衡~~~平穩飛行

兩個紙翼保持平衡~~~平穩飛行*/

//有乙個類是抽象的,但是裡面的方法不是抽象的,能否new?

/*但是 --- 即便全是具體方法,但類是抽象的,

也不能例項化.*/

abstract class car }

//$qq = new qq(); 不能例項化

//解決辦法》繼承

class qq extends car

$qq = new qq();

總結:

類前加 abstract 是抽象類

方法前加 abstract 是抽象方法

抽象類 不能 例項化

抽象方法 不能有 方法體

有抽象方法,則此類必是 抽象類

抽象類,內未必有抽象方法

但是 --- 即便全是具體方法,但類是抽象的,

也不能例項化.

請看如下場景:

facebook 多國語言歡迎頁面

user登陸,有乙個 c 字段,是其國家

當各國人登陸時,看到各國語言的歡迎介面

我們可以用面向過程的來做

$c = 'english';

if($c == 'china') else if($c =='english') else if($c == 'japan')

反思: 當facebook進入泰國市場時,

增加 else if ,擴充套件性很差

*****用物件導向來做*****=

讓美國小組/中國開發組/斯蜜達開發組 來開發welcome類

爭執不下: echo 到底該中? 日? 韓?

說: 乾脆在wel()方法裡,判斷一下? 沒意義啊

abstract class welcome   

// 這是首頁的controller開發者

//$wel = new welcome();

//$wel->wel();

/*說:你們別爭執了,我只知道,我要呼叫wel()方法,就是打招呼,

你們顯示什麼語言和我無關.*/

/**經理說話:

welcome誰也不許動,各國開發小組開發自己的招呼類

另:為了首頁的controller開發者便於呼叫,

統一繼承自welcome類

**/

class china extends welcome }

class english extends welcome }

class japan extends welcome }

// 再看首頁開發者

$c = 'english'; // china, japan

$wel = new $c();

$wel->wel();

/* 以後新增了泰國語,首頁的開發者,根本無需改動

只需要增加乙個泰國的welcome類 就可以了.

所以有一些物件導向的介紹中,說物件導向的乙個特點:可插拔特性

*/

php匯出CSV抽象類例項

該php匯出csv抽象類,可根據總記錄數與每批次記錄數,計算總批次,迴圈匯出。避免記憶體不足的問題。exportcsv.class.php類檔案如下 date 2014 05 16 author fdipzone ver 1.0 func public setpagesize 設定每批次匯出的記錄條...

抽象介面 php,簡述php抽象類和介面例項

抽象類 1 抽象類中可以宣告各種型別的變數。2 類中只要有抽象方法這個類就必須申明為抽象類。抽象方法的定義 abstract 修飾符 function 方法名 param 3 抽象類中的抽象方法,在子類中必須實現,並且保持引數一致,但是可以使用額外的預設值。4 抽象類不可以直接例項化。abstrac...

不能例項化抽象類的淺嚐

今天寫 想實現個功能,寫成乙個介面類,做成了cview的子類,編譯無法通過,說是不能例項化抽象類,由於cview ondraw是抽象的。這個問題我是第一次遇到,於是網上搜了一下都不能得到滿意的答案。找出c 方面的書認真分析了一下,又收穫不少。首先對於虛函式存在的意義有了新的認識。如果沒有虛函式,對於...