程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP面向對象中類的繼承的使用

PHP面向對象中類的繼承的使用

編輯:關於PHP編程

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(寶貝);  
$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(寶貝); 
$my_son->go_to_sleeping(); 
$my_son->eat(); 
$my_son->playing(); 
?>
解析:在我們的第一個使用繼承的范例裡使用了PHP的構造函數中所提到的構造函數和PHP類的封裝中的關鍵字,如果有什麼不明白的就去看看吧!我可不想再多說了,中午沒想睡覺呀.說說這段小程序吧。

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

文章引用自:http://club.topsage.com/thread-501298-1-1.html

<?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();
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved