国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php 繼承詳解

2024-09-04 11:43:39
字體:
來源:轉載
供稿:網友

繼承:通常需要這樣一些類,這些類與其它現有的類擁有相同變量和函數,實際上,定義一個通用類用于所有的項目,并且不斷豐富這個類以適應每個具體項目將是一個不錯的練習,為了使這一點變得更加容易,類可以從其它的類中擴展出來,擴展或派生出來的類擁有其基類(這稱為“繼承”,只不過沒人死)的所有變量和函數,并包含所有派生類中定義的部分,類中的元素不可能減少,就是說,不可以注銷任何存在的函數或者變量,一個擴充類總是依賴一個單獨的基類,也就是說,不支持多繼承,使用關鍵字“extends”來擴展一個類.

  1. <?php 
  2. class test { 
  3.  
  4.     public function __construct() {  
  5.     } 
  6.  
  7.     public function name() {  
  8.         $this->xname('John');  
  9.     } 
  10.  
  11.     private function showName($name) {  
  12.         echo 'my name in test is '.$name;  
  13.     }  
  14.  
  15. class extendTest extends test { 
  16.  
  17.     public function __construct() {  
  18.         parent::__construct();  
  19.     } 
  20.  
  21.     private function showName($name) {  
  22.         echo 'my name in extendTest is '.$name;  
  23.     }  
  24.  
  25. $test = new extendTest();  
  26. $test->name();  
  27. ?> 

上述示例定義了名為 Named_Cart 的類,該類擁有 Cart 類的所有變量和函數,加上附加的變量 $owner 和一個附加函數 set_owner(),現在,以正常的方式創建了一個有名字的購物車,并且可以設置并取得該購物車的主人,而正常的購物車類的函數依舊可以在有名字的購物車類中使用:

  1. <?php 
  2. $ncart = new Named_Cart;    // 新建一個有名字的購物車 
  3. $ncart->set_owner("kris");  // 給該購物車命名 
  4. print $ncart->owner;        // 輸出該購物車主人的名字 
  5. $ncart->add_item("10", 1);  // (從購物車類中繼承來的功能) 
  6. ?> 

這個也可以叫做“父-子”關系,創建一個類,父類,并使用 extends 來創建一個基于父類的新類:子類,甚至可以使用這個新的子類來創建另外一個基于這個子類的類.

Note:類只有在定義后才可以使用,如果需要類 Named_Cart 繼承類 Cart,必須首先定義 Cart 類,如果需要創建另一個基于 Named_Cart 類的 Yellow_named_cart 類,必須首先定義 Named_Cart 類,簡捷的說:類定義的順序是非常重要的.

  1. <?php 
  2. class Person{ 
  3.  protected $name;//protected保護的權限,在子類可以訪問,外部不能訪問 
  4.  protected $age
  5.  protected $sex
  6.  
  7.  function __construct($name,$age,$sex){ 
  8.   $this->name=$name;//當使用this時,就算name沒有聲明,也會再次聲明一個 
  9.   $this->age=$age
  10.   $this->sex=$sex
  11.  
  12.   echo "###############"
  13.  } 
  14.  
  15.  public function say(){ 
  16.   echo "我的名字:{$this->name},我的年齡{$this->age}:,我的性別:{$this->sex}<br/>"
  17.  } 
  18.  
  19.  protected function eat(){ 
  20.  
  21.   echo "wwwwwwwwwwwwwwwwwwwww<br>"
  22.  
  23.  } 
  24.  
  25.  function run(){ 
  26.  
  27.  } 
  28.  protected $name;//protected保護的權限,在子類可以訪問,外部不能訪問 
  29.  protected $age
  30.  protected $sex
  31.  
  32. //繼承 
  33. class Student extends Person{ 
  34.  var $school
  35.  
  36.  function __construct($name,$age,$sex,$school){ 
  37.   parent::__construct();//調用父類的構造方法 
  38.   $this->school=$school
  39.  } 
  40.  
  41.  //重載say()方法,進行擴展 
  42.  protected function say(){//父類使用public,子類的權限不能低于父類,可以喝父類的權限相同 
  43.   //Person::say();//調用父類的say()方法 
  44.   parent::say();//調用父類say()方法,parent代表父類名,當父類名變化時也能夠調用。 
  45.  
  46.   echo "我所在的學校{$this->school}<br/>"
  47.  } 
  48.  
  49.  function study(){ 
  50.   echo "{$this->name}在學習<br/>"
  51.  } 
  52.  
  53.  
  54. $s=new Student("zhangsan",23,"男"); 
  55. $s->say(); 
  56. $s->study(); 
  57. ?> 

1.面向對象的三大特性之一

2.開放性、可擴充性

3.增加代碼的重用性

4.提高了軟件的可維護性

5.繼承就是用子類去“擴展”父類

C++ 屬于多繼承,同一個類可以有多個父類

PHP和JAVA屬于單繼承,同一個類只能有一個父類

不管是多繼承或者單繼承,都可以有多個子類

只要你在設計兩個類時,有可以共享的成員,就將可以共享的內容單獨作為一個基類使用

一、類繼承的應用

1.聲明一個子類,使用extends關鍵字去繼承(擴展)一個父類

2.子類可以從父類中繼承所有的內容,包括成員屬性方法,構造方法......,在子類中都可以使用

二、訪問類型控制

雖然子類可以從父類中繼承所有內容,但私有的private成員,只能在本類中使用,子類中也不能使用

封裝時,既可以讓自己類的內部可以訪問,也讓子類可以用,但類的外部不能使用,只要將權限設置為protected

三、子類中重載父類的方法

1.子類可以聲明可以聲明和父類相同的方法名,即子類覆蓋了父類同名的方法

2.子類的方法對父類方法的擴展

3.在子類中調用父類中被覆蓋的方法

使用 父類名::方法名()  parent::方法名()

4.在子類中編寫構造方法,如果父類中也有構造方法,一定要去調用一次父類中被覆蓋的構造方法

注意:子類中重載的方法,不能低于父類中訪問權限(子類可以放大權限,但不能縮小權限).

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漾濞| 台江县| 赣州市| 贵港市| 霞浦县| 望谟县| 凌云县| 外汇| 恩平市| 稷山县| 钟祥市| 松原市| 昭通市| 托克托县| 九寨沟县| 榆中县| 灵璧县| 永丰县| 钦州市| 嵊泗县| 裕民县| 焉耆| 龙门县| 大田县| 凤庆县| 瑞昌市| 彭阳县| 绿春县| 根河市| 成武县| 甘德县| 阿尔山市| 竹溪县| 甘洛县| 玉屏| 阿克陶县| 黄龙县| 庆云县| 庆阳市| 武平县| 崇左市|