继承

继承 (Inheritance)

继承是类的扩展。子类拥有父类的所有属性和方法。

继承是面向对象编程(OOP)中的核心概念之一。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:人类

考虑一个父亲和他的孩子。在定义上,孩子会从父亲那里继承某些属性。所以孩子可能拥有父亲的所有特征,除此之外,孩子可能还有一些额外的特征。以此为类比,考虑两个类:PersonProgrammer。基类的代码如下:

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

特性 (Traits)

最初,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;
?>

解释:

  • 继承允许子类继承父类的属性和方法。
  • PHP5的语法使用__construct构造方法来初始化对象。
  • **特性(Trait)**允许在多个类之间共享代码,而不需要继承。可以使用use关键字来引入特性,允许类同时使用多个特性。

最后修改: 2025年01月10日 星期五 01:18