跳转到内容

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


华夏公益教科书