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 MyM
}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教程有興趣的朋友有所幫助。