PHP面向对象-子类对父类成员的访问(二)

2023-04-28 09:12:57 浏览数 (1)

访问继承的方法

子类可以继承父类的方法,并且可以覆盖它们以实现自己的行为。子类可以调用继承的方法,包括公共、保护和私有方法。下面是一个示例:

代码语言: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语句输出了自己的行为。

php

0 人点赞