什么是 OOP 中的覆盖多态性.能否在 php 中举例说明


what is overriding polymorphism in OOP. Can please give example in php

我知道什么是多态性。但遇到了压倒一切的多态性。那是什么,什么时候需要?

很高兴听到你知道什么是"多态性"。

让我来解释一下多态性中的">Overriding"是什么。

假设您有一个名为 .. Bird

class Bird
{
    public function fly()
    {
        echo "I can fly";
    }
}

我提出了一种叫做fly()的方法,这是鸟类的共同特征。(让我们看看..哎呀( .我已经像每只鸟都能飞一样。好吧

。。。

让我们有另一个名为 Sparrow 的类,它扩展Bird

class Sparrow extends Bird
{
}

由于它扩展了Bird类,因此您可以像这样直接访问方法fly()

$sparrow = new Sparrow();
$sparrow->fly();// "prints" I can fly

好吧,现在,让我们有另一个称为 Duck 的类,它扩展了 Bird 类(假设......鸭子不会飞(,所以我们应该访问它会打印"我可以飞">fly()[我们不需要那个,所以在这种情况下我们需要覆盖该方法]

覆盖方法!

class Duck extends Bird
{
    public function fly()   //Method Overriding
    {
        echo "I cannot fly";
    }
}

最终如果你这样做......你会变成这样。

$duck = new Duck();
$duck->fly(); // "prints" I cannot fly

这在某种程度上是对"方法覆盖"的基本解释。