2.3成員方法(函數)
我理解的成員方法就是去具體執行這個類某些特定的功能,或者說這個類能做的事情。它與類外的函數用起來沒有什麼區別,只不過是在類裡面聲明的。在使用時需要用執行個體的類對象來調用它。
同樣,成員方法也可以被許可權修飾符修飾,private、protected、public。當使用修飾符修飾之後他們的使用許可權與成員屬性的使用許可權一樣。如果不顯示的使用許可權修飾符,預設為public。一般成員方法聲明成public,方便對象調用,去操作類裡面的私人屬性。
在這裡我就不特別的舉例了。
2.4 final關鍵字
前面已經接觸了三個關鍵字,this,static,const。經常用到的還有final關鍵字。
被關鍵字final修飾過的類和方法就是“最終的類和方法”。也就是說被final修飾過的類不能被繼承,被final修飾過的方法不能被重寫,被final修飾過的屬性不能被更改。
final關鍵字寫在class與function高關鍵字前面。
如final class MyClass{
//……
}
final function MyFunction(){
//……
}
3、類的繼承
3.1 類的繼承
正如我們可以繼承父輩的財產一樣,類也可以繼承。使用類繼承之後,被繼承的類稱作父類或基類,繼承的類稱為子類或衍生類別。子類可以繼承父類的所有屬性和方法,並且在必要的時候可以重寫父類中沒有被final修飾過的方法。類的繼承使用:extends關鍵字。但是要記住PHP是單一繼承,也就是說一個類只能繼承一個類,不能一次繼承多個類,這一點與C++不同。
為什麼要使用類的繼承呢?
我理解的就是有些東西他們共同屬於一個大類,有著共同的屬性或者方法,但是自己本身又有新的屬性或者方法,那麼如果我用到的時候每次都重複寫一些一樣的代碼,完全沒有必要,那麼我不如把他們共同的東西放在一個基類中,把他們不同的東西分離出來,然後繼承基類,這樣我就減少了很大的工作量。舉個很簡單的例子,老鷹和老虎我們都可以稱為動物,他們都有眼嘴等器官,都可以吃東西。這是他們倆的共同點,但是老鷹會飛,老虎會跑,這是他們的不同點。那麼我就可以聲明一個動物類,class animal{}把他們相同的放在這裡面,不同的我在繼承這個,添加新的方法。當然我也可以分別寫,不繼承,但是我這裡只是舉了兩個具體的動物,如果有很多呢,還要一個一個寫嗎,他們共同的地方就沒有必要了。再比如,我最近看的zend framework架構,需要聲明很多表模型,他們都繼承了zend_Db_Table這個類,如果不繼承,那裡面很多很多方法就需要自己重寫,一是寫不出來,二是沒有必要,所以繼承還是很重要的。
class Animal{protected $eyes;protected $mouth;//...public function eat(){//...}}class Tiger extends Animal{public function run(){//...}}class Eagle extends Animal{public function fly(){//...}} 不要認為子類中只聲明了這個方法就只有這個方法,它其實有父類中所有的方法和屬性。並且可以使用非private聲明的屬性和方法。
3.2 抽象類別
抽象類別是一種不能被執行個體化的類,也就是說如果我聲明了一個抽象類別,後面不能new一個這個類的對象。它只能作為其他類的父類來使用。它使用abstract關鍵字聲明:
abstract class MyClass{//...} 抽象類別裡面至少包含一個抽象方法,抽象方法也是使用abstract關鍵字來聲明的,如:
abstract function FunctionName(各種參數);
抽象方法後面必須跟“;”。抽象方法在抽象類別裡面不能夠被實現,也就是說沒有函數體,只是聲明。它的功能只能在子類中完成。
這裡注意:抽象類別裡面可以包含普通的方法,不一定是抽象方法,但是必須至少含有一個抽象方法。
至此,物件導向基本完成。還有介面的使用,那個等我用到的時候再寫吧。下一篇就開始寫MySql資料庫的操作。
以上就介紹了邊記邊學PHP-(十三)物件導向編程3,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。