跳轉到內容

PHP 程式設計/繼承

來自華夏公益教科書,開放的書籍,為開放的世界

繼承是類的擴充套件。子類具有其父類的所有屬性和方法。

繼承是面向物件程式設計的核心概念之一。PHP 像其他支援繼承的面嚮物件語言一樣支援繼承。

示例 1:寵物

[編輯 | 編輯原始碼]

例如,寵物通常具有相似的特徵,無論它們是什麼型別的動物。寵物吃東西、睡覺,可以被命名。但是,不同型別的寵物也有自己的方法:狗會吠,貓會喵喵叫。以下是對此的實現

<?php
class Pet
{
   var $_name;

   function Pet($name)
   {
      $this->_name = $name;
   }

   function eat()
   {
   }

   function sleep()
   {
   }
}

class Dog extends Pet
{
   function bark()
   {
   }
}

class Cat extends Pet
{
   function meow()
   {
   }
}

$dog = new Dog("Max");
$dog->eat();
$dog->bark();
$dog->sleep();

$cat = new Cat("Misty");
$cat->eat();
$cat->meow();
$cat->sleep();
?>

同樣,我們可以對繼承的類使用 PHP5 語法

<?php
class Pet
{
   var $_name

   public function __construct($name)
   {
      $this->_name = $name;
   }

   function eat()
   {
   }

   function sleep()
   {
   }
}
?>

示例 2:人物

[編輯 | 編輯原始碼]

考慮兩個人,一個是父母,一個是孩子。根據定義,孩子會從父母那裡繼承某些屬性。因此,孩子可能擁有父母的所有特徵,並且除了這些特徵之外,孩子還可能擁有額外的特徵。考慮到這個類比,考慮兩個類 Person 和 programmer,基類有以下程式碼。

<?php
class Person{
    var $legs=2;
    var $head=1;

    function walk(){
        echo "Walk";
    }
}
?>

Person 類有兩個屬性 $legs 和 $head,它有一個方法 walk。假設還有另一個類 programmer。programmer 類具有所有這些屬性和方法,因此您可以再次定義它,或者您可以從 Person 類繼承。因此,您可以將 programmer 類定義如下。

<?php
    class programmer extends Person{
    
    }
?>

請注意,我們要做的就是使用關鍵字 extends,然後後跟基類,然後基類的所有屬性都將被繼承,這意味著我們可以這樣做。

<?php

$jedai = new programmer();
echo $jedai->legs;
echo $jedai->head;
echo $jedai->walk();

?>

最初,PHP 是一種簡單的繼承語言。但是,從 PHP 5.4.0 開始,一個名為 "trait" 的資料結構允許多重繼承。

示例

<?php
trait MyTrait1
{
	function Hello() {
		print 'Hello';
	}
}

trait MyTrait2
{
	function World() {
		print 'World';
	}
}

class MyClasse1
{
	use MyTrait1;
	use MyTrait2;
	
	function __construct() {
		$this->Hello();
		$this->World();
	}
}

$Test = new MyClasse1;
?>


華夏公益教科書