Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是OOP中最重要的多态性。请用php举例_Php_Object Oriented Analysis - Fatal编程技术网

什么是OOP中最重要的多态性。请用php举例

什么是OOP中最重要的多态性。请用php举例,php,object-oriented-analysis,Php,Object Oriented Analysis,我知道什么是多态性。但是出现了压倒一切的多态性。那是什么?什么时候需要 很高兴听到你知道什么是“多态性”。 让我解释一下多态性中什么是“重写” 假设你有一门课叫Bird class Bird { public function fly() { echo "I can fly"; } } 我提出了一种叫做fly()的方法,这是鸟类的一种常见特征。(让我们看看……好的)。我像每一只鸟都能飞一样坚持。好吧,好吧 让我们有另一个名为“麻雀”的类,它扩展了“鸟”类

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

很高兴听到你知道什么是“多态性”。 让我解释一下多态性中什么是“重写”

假设你有一门课叫
Bird

class Bird
{
    public function fly()
    {
        echo "I can fly";
    }
}
我提出了一种叫做
fly()
的方法,这是鸟类的一种常见特征。(让我们看看……好的)。我像每一只鸟都能飞一样坚持。好吧,好吧

让我们有另一个名为“麻雀”的类,它扩展了“鸟”类

class Sparrow extends Bird
{

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

$sparrow = new Sparrow();
$sparrow->fly();// "prints" I can fly
$duck = new Duck();
$duck->fly(); // "prints" I cannot fly
现在,让我们使用另一个名为Duck的类来扩展Bird类(假设鸭子不会飞),因此我们应该访问
fly()
它会打印“我会飞”[我们不需要它,所以在这种情况下我们需要重写该方法]

重写方法! 最终,如果你这样做。。你会变成这样的

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


这在某种程度上是对“方法重写”的基本解释。也许你能举出一些你遇到这个词的背景吗?我会读的。也许给我们举一个你想做的事情的例子可以帮助我们澄清一些事情……1)鸭子能飞得很好。2) 不能飞的鸟不应该延伸能飞的鸟。类层次结构应该是
Bird
FlyingBird extensed Bird
Sparrow extensed FlyingBird
Kiwi extensed Bird
。或者使用接口