深入探討PHP類的繼承
PHP類的繼承在PHP語言的學(xué)習(xí)中是一個(gè)比較重要的知識(shí)點(diǎn)。那么我們該如何正確的學(xué)習(xí)PHP類的繼承呢?在PHP面向?qū)ο缶幊汤?,類的繼承永遠(yuǎn)是最關(guān)鍵的。#t#
這就像人類生兒育女一樣(為什么一定要生兒育女呢,難道就是為了防老!不得而知呀),你把自己的一些基因和你老婆的基因各拿出來一些,再生成一個(gè)新的個(gè)體,這個(gè)新的個(gè)性一定會(huì)包含你們兩個(gè)人身上的特征,這就是生物上關(guān)于遺傳(繼承)的一個(gè)解說。在編程的世界是這個(gè)遺傳就是繼承!
首先在了解了繼承的一些活生生的原理后,我想再來看PHP類的繼承是不是不再那么神秘?;蛟S它本來就不神秘,是因?yàn)槲覀冏约禾珡?fù)雜了吧。要有繼承就得有一個(gè)“根源”,這“根源”你可能想像你以后生了兒子或者女兒,他們會(huì)從你這里得到一些“東西(屬性和方法)”,這樣你的“后代”就是持有你的(根源)所有一些特征了。下面通過語法來描述一下這個(gè)在PHP的面向?qū)ο笾惺窃趺幢磉_(dá)吧(不可能像人類那么直接啦,結(jié)婚,過段時(shí)間你的后代就產(chǎn)生了)
1.產(chǎn)生“根源”類(父類或者基類)
語法:class father{
}
1.產(chǎn)生“后代”(子類)
語法:class son extends father{
}
說明:父類只是一個(gè)平常的類,要想有后代你只需要在平常類后加一個(gè)extends關(guān)鍵字就OK了,這樣你的子類只擁有了父類所有的屬性和方法了。其實(shí)就是這么簡單罷了。
下面讓我們做點(diǎn)實(shí)際點(diǎn)事情吧,畢竟PHP類的繼承中定義一個(gè)父類和子類是要完成某個(gè)任務(wù)的吧!在這里這個(gè)任務(wù)比較單調(diào),就拿人來說,人有名字(屬性),人要睡覺還要吃飯(方法)。我們就用這個(gè)基本的任務(wù)要完成本節(jié)的知識(shí)吧。
- < ?php
- class father{
- protected $name;
- function __construct($name){
- $this->name=$name;
- }
- function __destruct(){
- echo "< p>{$this->name}也是要死的< br/>< /p>";
- }
- //這個(gè)就是所謂的構(gòu)造函數(shù),用來初始化
- function go_to_sleeping(){
- echo "< p>{$this->name}想睡覺.< /p>";
- }
- function eat(){
- echo "< p>{$this->name}想吃飯.< /p>";
- }
- }
- class son extends father{
- function playing(){
- //小孩子會(huì)很調(diào)皮的,當(dāng)然他也是要吃要睡的生物
- echo "< p>{$this->name}正在搗蛋...< /p>";
- }
- }
- $your_father=new father("老爸");
- $your_father->go_to_sleeping();
- $your_father->eat();
- $my_son=new son('寶貝');
- $my_son->go_to_sleeping();
- $my_son->eat();
- $my_son->playing();
- ?>
- < ?php
- class father{
- protected $name;
- function __construct($name){
- $this->name=$name;
- }
- function __destruct(){
- echo "< p>{$this->name}也是要死的< br/>< /p>";
- }
- //這個(gè)就是所謂的構(gòu)造函數(shù),用來初始化
- function go_to_sleeping(){
- echo "< p>{$this->name}想睡覺.< /p>";
- }
- function eat(){
- echo "<p>{$this->name}想吃飯.</p>";
- }
- }
- class son extends father{
- function playing(){
- //小孩子會(huì)很調(diào)皮的,當(dāng)然他也是要吃要睡的生物
- echo "< p>{$this->name}正在搗蛋...< /p>";
- }
- }
- $your_father=new father("老爸");
- $your_father->go_to_sleeping();
- $your_father->eat();
- $my_son=new son('寶貝');
- $my_son->go_to_sleeping();
- $my_son->eat();
- $my_son->playing();
- ?>
解析:在我們的***個(gè)使用繼承的范例里使用了PHP的構(gòu)造函數(shù)中所提到的構(gòu)造函數(shù)和PHP類的封裝中的關(guān)鍵字,如果有什么不明白的就去看看吧!我可不想再多說了,中午沒想睡覺呀.說說這段小程序吧。
在類的father里,我們定義了一般的特征,比如人的名字,人要吃飯和睡覺,然后在它的子類(后代)我們定義一個(gè)個(gè)性化的方法(playing),畢竟人與人之間是有不同的地方吧。我們使用構(gòu)造函數(shù)來初始化這個(gè)人名,當(dāng)然也使用了析構(gòu)函數(shù)來“消滅”掉對(duì)象,但你可能沒有發(fā)現(xiàn)在子類里內(nèi)是沒有構(gòu)造函數(shù)和析構(gòu)函數(shù)的,所以子類是繼承了父的所有方法,要不然你怎么能$my_son->go_to_sleeping();這樣調(diào)用呢,這就是PHP類的繼承了。