PHP编程
完成条件
继承
继承 (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:人类
考虑一个父亲和他的孩子。在定义上,孩子会从父亲那里继承某些属性。所以孩子可能拥有父亲的所有特征,除此之外,孩子可能还有一些额外的特征。以此为类比,考虑两个类: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();
?>
特性 (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