【问题标题】:what is overriding polymorphism in OOP. Can please give example in php [closed]什么是 OOP 中最重要的多态性。可以请在php中举个例子[关闭]
【发布时间】:2013-12-02 09:18:25
【问题描述】:

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

【问题讨论】:

  • This video/playlist 可能会有帮助
  • 也许你可以举出一些你遇到这个词的上下文?
  • 我会读this question。也许举一个你正在尝试做的例子会帮助我们澄清事情......

标签: php object-oriented-analysis


【解决方案1】:

很高兴听到您知道什么是“多态性”。

让我解释一下多态中的“Overriding”是什么。

假设你有一个类叫做.. Bird

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

我提出了一个名为 fly() 的方法,这是鸟类的共同特征。 (让我们看看.. O.o)。我已经忍受了,就像每只鸟都能飞一样。好吧..

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

class Sparrow extends Bird
{

}

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

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

现在,让我们创建另一个名为 Duck 的类,它扩展了 Bird 类(假设......鸭子不会飞),所以我们应该访问 fly() 它会打印“I can fly” [我们不需要那个,所以在这种情况下我们需要Override该方法]

重写方法!

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

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

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

这是对“方法覆盖”的一些基本解释。

【讨论】:

  • 1) 鸭子飞得很好。 2)不会飞的鸟不应该extend会飞的鸟。类层次结构应为BirdFlyingBird extends BirdSparrow extends FlyingBirdKiwi extends Bird。或者使用接口。 ;)
猜你喜欢
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2011-02-21
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多