访问继承的方法
子类可以继承父类的方法,并且可以覆盖它们以实现自己的行为。子类可以调用继承的方法,包括公共、保护和私有方法。下面是一个示例:
代码语言:javascript复制class Animal {
public function speak() {
echo "I am an animaln";
}
protected function walk() {
echo "I am walkingn";
}
private function eat() {
echo "I am eatingn";
}
}
class Dog extends Animal {
public function bark() {
echo "Woof!n";
}
public function walkAndBark() {
$this->walk();
$this->bark();
}
public function eat() {
echo "I am a dog and I am eatingn";
}
}
$dog = new Dog();
$dog->speak(); // Output: I am an animal
$dog->walk(); // Fatal error: Call to protected method Animal::walk()
$dog->bark(); // Output: Woof!
$dog->walkAndBark(); // Output: I am walking Woof!
$dog->eat(); // Output: I am a dog and I am eating
在上面的示例中,我们定义了一个Animal
类,它有一个公共的speak()
方法、一个保护的walk()
方法和一个私有的eat()
方法。然后我们定义了一个Dog
类,它继承自Animal
类,并添加了一个公共的bark()
方法、一个公共的walkAndBark()
方法和一个公共的eat()
方法。在Dog
类中,我们调用了继承的walk()
方法,并且使用$this->
语法调用了自己的bark()
方法。我们还覆盖了继承的eat()
方法,以实现自己的行为。
在子类中,可以调用继承的公共和保护方法,但不能直接调用继承的私有方法。如果需要调用继承的私有方法,可以在父类中添加一个公共的调用器方法。在子类中,还可以覆盖继承的方法以实现自己的行为。在覆盖方法时,可以使用parent::
语法调用父类的方法。在上面的示例中,Dog
类覆盖了继承的eat()
方法,并使用echo
语句输出了自己的行为。