可能重复:
PHP 中的类级别是否允许多重继承?
所以我知道在 PHP 中,多重继承不是“直接”支持的(我想这在许多其他语言中就是这种情况,例如 java)。所以我们做这样的事情:
class A extends B implements C, D
现在PHP version 5.4
,我认为,我们有traits
哪些bunches functionality together..
并且可以是used
多个类。
现在我的问题是,为什么这些语言不能支持多重继承?
我的意思是:
class A extends B, C
我在互联网上阅读了一些文章,人们试图解释为什么这很难用该语言实现,但它们要么技术性太强,我无法理解,要么听起来不够好。有人可以简单地描述一下为什么这些语言很难支持多重继承吗?如果您可以将 PHP 放在上下文中,那就太好了,因为这是我最了解的语言。
我一直认为这可能是因为模棱两可(钻石问题等),但这可以很容易地通过某种命名空间标记器机制来处理,同时声明函数,我想..我知道这意味着语言可能需要重新定义相同的函数两次,(例如重载在 Java 中的工作方式)
<?php
class A{
function __construct()
{
}
function ambiguous_fn()
{
echo "This function is ambiguous";
}
function fnA()
{
echo "This is function A";
}
}
class B{
function __construct()
{
}
function ambiguous_fn()
{
echo "This function is ambiguous";
}
function fnB()
{
echo "This is function B";
}
}
class C extends A,B{
function __construct()
{
}
//This function will obviously confuse the PHP engine, because it does not know
//if it should override from A or B. But cant we have a namespace/tokenizer kind of solution
//to resolve the ambiguity? Or is that not possible?
function ambiguous_fn()
{
}
}
?>
我的意思是从现实生活中的对象模仿的角度来看,有时我认为纯多重继承会有很大的帮助。我知道其中一个论点是“多重继承的用例非常小,通常可以使用多个接口、mixin 等来解决”。但实际上,语言设计者没有费心去实现人们认为的纯多重继承,肯定有一个更正当的理由。
我完全错过了这里的重点吗?有人可以对此有所了解吗?