在PHP中,`extends` 关键字用于实现类的继承。继承是面向对象编程中的一个核心概念,它允许我们定义一个类(子类或派生类)来继承另一个类(父类或基类)的属性和方法。使用继承,我们可以重用、扩展或修改父类的行为。
下面是一个简单的PHP类继承的例子,展示了如何使用 `extends` 关键字:
<?php
// 定义父类
class Animal {
public function eat() {
echo "This animal eats food.\n";
}
}
// 定义子类,继承自Animal类
class Dog extends Animal {
// 覆写父类的eat方法
public function eat() {
// 调用父类的eat方法(可选)
parent::eat();
echo "Dogs love meat!\n";
}
// 定义子类特有的方法
public function bark() {
echo "Woof!\n";
}
}
// 创建Dog类的实例
$myDog = new Dog();
// 调用继承自Animal的方法
$myDog->eat();
// 调用Dog类特有的方法
$myDog->bark();
?>
在这个例子中,`Dog` 类通过 `extends` 关键字继承了 `Animal` 类。这意味着 `Dog` 类自动获得了 `Animal` 类中定义的 `eat` 方法。然后,`Dog` 类通过定义自己的 `eat` 方法来覆写(或重写)了父类的 `eat` 方法。此外,`Dog` 类还定义了一个自己特有的方法 `bark()`。
注意,子类可以访问父类中定义的公有(`public`)和保护(`protected`)属性和方法,但不能直接访问私有(`private`)属性和方法。如果需要访问私有属性或方法,通常需要通过父类中提供的公有或保护方法来实现。
此外,使用 `parent` 关键字可以在子类中调用父类的构造函数或其他方法。但请注意,如果子类定义了构造函数,并且需要调用父类的构造函数,那么需要使用 `parent::__construct()` 显式调用。如果子类没有定义构造函数,那么会自动调用父类的构造函数(如果存在)。