首頁  >  文章  >  後端開發  >  邊記邊學PHP-(十三)物件導向程式設計3

邊記邊學PHP-(十三)物件導向程式設計3

WBOY
WBOY原創
2016-08-08 09:32:29755瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn