多重继承和多态性有什么区别?

OM *_*ity 4 php oop polymorphism multiple-inheritance

多重继承和多态性有什么区别?

在一本书中,我用红线说道

在类级别不支持多重继承.这意味着您不能一次扩展多个类.

这与多态性的概念相矛盾,在同一本书中描述

多态性是从特定基类创建多个对象的过程

现在,如果PHP中不允许多重继承,那么如何允许多态性?

Xav*_* Ho 19

就像Ikke所说,多重继承与多态性无关.

如果我可以绘制类图,则多重继承如下所示:

Base A    Base B
  ^         ^
   \       /
    \     /
     Child
Run Code Online (Sandbox Code Playgroud)

因此,该类Child将继承两个类的属性和行为.Java和PHP等许多语言都不允许这样,但Python确实如此.

另一方面,多态性就是你可以抽象出一种专业化.首先,类图:

     Animal
     ^    ^
    /      \
   /        \
 Cat        Dog
Run Code Online (Sandbox Code Playgroud)

你可以做以下事情:

// Assuming we have a pack of animals
// This is Java
for (Animal pet : pack)
    pet.speak();
Run Code Online (Sandbox Code Playgroud)

pet根据实施情况,每个人都会说不同的事情.