首頁  >  文章  >  後端開發  >  php中關於物件導向中類別的繼承的使用介紹

php中關於物件導向中類別的繼承的使用介紹

黄舟
黄舟原創
2017-07-02 11:25:541034瀏覽

PHP類別的繼承在PHP語言的學習中是一個比較重要的知識點。那我們該如何正確的學習PHP類別的繼承呢?在PHP物件導向程式設計裡,類別的繼承永遠是最關鍵的。

這就像人類生兒育女一樣(為什麼一定要生兒育女呢,難道就是為了防老!不得而知呀),你把自己的一些基因和你老婆的基因各拿出來有些,再生成一個新的個體,這個新的個性一定會包含你們兩個人身上的特徵,這就是生物上關於遺傳(繼承)的一個解說。在程式設計的世界是這個遺傳就是繼承!

首先在了解了繼承的一些活生生的原理後,我想再來看PHP類別的繼承是不是不再那麼神秘。或許它本來就不神秘,是因為我們自己太複雜了。要有繼承就得有一個“根源”,這“根源”你可能想像你以後生了兒子或女兒,他們會從你這裡得到一些“東西(屬性和方法)”,這樣你的「後代」就是持有你的(根源)所有一些特徵了。下面透過語法來描述一下這個在PHP的面向對像中是怎麼表達吧(不可能像人類那麼直接啦,結婚,過段時間你的後代就產生了)

1.產生“根源”類別(父類別或基底類別)

語法:

class father{
}

1.產生「後代」(子類別)

語法:

class son extends father{
}

說明:父類只是一個平常的類,要想有後代你只需要在平常類後面加一個extends關鍵字就OK了,這樣你的子類只擁有了父類所有的屬性和方法了。其實就是這麼簡單罷了。

下面讓我們做點實際點事情吧,畢竟PHP類別的繼承中定義一個父類別和子類別是要完成某個任務的吧!這裡這個任務比較單調,就拿人來說,人有名字(屬性),人要睡覺還要吃飯(方法)。我們就用這個基本的任務要完成本節的知識吧。

<?php   
class father{   
protected $name;   
function construct($name){   
$this->name=$name;   
}   
function destruct(){   
echo "<p>{$this->name}也是要死的<br/></p>";   
}   
//这个就是所谓的构造函数,用来初始化   
function go_to_sleeping(){   
echo "<p>{$this->name}想睡觉.</p>";   
}   
function eat(){   
echo "<p>{$this->name}想吃饭.</p>";   
}   
}   
class son extends father{   
function playing(){   
//小孩子会很调皮的,当然他也是要吃要睡的生物   
echo "<p>{$this->name}正在捣蛋...</p>";   
}   
}   
$your_father=new father("老爸");   
$your_father->go_to_sleeping();   
$your_father->eat();   
$my_son=new son(&#39;宝贝&#39;);   
$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>";  
}  
//这个就是所谓的构造函数,用来初始化  
function go_to_sleeping(){  
echo "<p>{$this->name}想睡觉.</p>";  
}  
function eat(){  
echo "<p>{$this->name}想吃饭.</p>";  
}  
}  
class son extends father{  
function playing(){  
//小孩子会很调皮的,当然他也是要吃要睡的生物  
echo "<p>{$this->name}正在捣蛋...</p>";  
}  
}  
$your_father=new father("老爸");  
$your_father->go_to_sleeping();  
$your_father->eat();  
$my_son=new son(&#39;宝贝&#39;);  
$my_son->go_to_sleeping();  
$my_son->eat();  
$my_son->playing();  
?>

解析:在我們的第一個使用繼承的範例裡使用了PHP的建構子中所提到的建構子和PHP類的封裝中的關鍵字,如果有什麼不明白的就去看看吧!我可不想再多說了,中午沒想睡呀.說說這段小程式吧。

在類別的father裡,我們定義了一般的特徵,例如人的名字,人要吃飯和睡覺,然後在它的子類別(後代)我們定義一個個性化的方法(playing),畢竟人與人之間是有不同的地方吧。我們使用建構子來初始化這個人名,當然也使用了析構函式來「消滅」掉對象,但你可能沒有發現在子類別裡內是沒有建構子和析構函式的,所以子類別是繼承了父的所有方法,要不然你怎麼能$my_son->go_to_sleeping();這樣呼叫呢,這就是PHP類別的繼承了。

<?php
class my_class{
var $username="小鸡";
var $num=10;
function yingxiaoji(){
   //使用类里的全局变量
$num=$this->num;
$username=$this->username;
echo "我养了".$num."条".$username; 
} 
function jiegou(){
   //使用类中的函数时,用this直接引用
   $this->yingxiaoji();
   echo "全都卖了";
}
}
//php类的承 extends表示继承,但是php不允许同时继承多个基类
class my_class_extend extends my_class{
var $color="红色";
function mycolor(){
   $color=$this->color;
   $username=$this->username;
   echo ",这只".$username."是".$color;
}
}
$myname=new my_class(); //类的实例化
$myname->yingxiaoji();
echo "<br>";
//针对类中的变量重新赋值
$myname->username="小鸭子";
$myname->num="20";
$myname->yingxiaoji();
echo "<br>";
$myname->jiegou();
echo "<br>";
//初始化一个类的继承类
$myname_extend=new my_class_extend();
$myname_extend->jiegou();
$myname_extend->mycolor();
echo "<br>";
//由于是继承类,那么它的基类的属性全都有了,就可以直接给基类的变量传值
$myname_extend->username="小鸭子";
$myname_extend->num=100;
$myname_extend->color="黑色";
$myname_extend->jiegou();
$myname_extend->mycolor();
?>

以上是php中關於物件導向中類別的繼承的使用介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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