我试图理解使用接口如何给我多重继承,因为我一直在谷歌上搜索.
class A
{
function do1(){}
function do2(){}
function do3(){}
}
class B extends A
{
function do4(){}
function do5(){}
function do6(){}
}
class C extends B
{
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,类C具有来自类A和B的所有方法.但是,类B也具有类A的所有方法,这是不必要的.
我的搜索已经出现使用接口来解决这个问题,方法是将方法移动到类并创建接口,如下所示.
interface A
{
function do1();
function do2();
function do3();
}
interface B
{
function do4();
function do5();
function do6();
}
class C implements A, B
{
function do1(){}
function do2(){}
function do3(){}
function do4(){}
function do5(){}
function do6(){}
}
Run Code Online (Sandbox Code Playgroud)
我真的没有看到这是如何解决这个问题的,因为所有代码都在新类中.如果我只想最初使用类A,我将不得不创建一个实现接口A的新类,并将相同的代码复制到新类.
有什么我想念的吗?
这个问题有点针对PHP,但它可能也适用于其他语言.在PHP中,您只能扩展一个类.但是如果你需要更多课程呢?
假设我有以下课程:
class MyClass extends Observer, Logger, OtherUtilClass
Run Code Online (Sandbox Code Playgroud)
MyClass不能扩展多个类.但它需要成为观察者.它可能需要一些其他基类以及完全功能.对此最好的方法是什么?
当我想扩展两个父类时,我遇到了一种情况,但php不允许这样做.
为什么我不能extend超过一个类,但可以implement不止一个interface.扩展许多课程有什么问题?
在我得到解析错误之前,在我看来这很明显.
这是一种不好的做法吗?如果是这样,有哪些替代方案?
是否可以用其他语言?