在实现期望父实例的接口方法时,儿童类的依赖注入



我对面向对象的编程有一些疑问。

想象一下这种情况:

abstract class A {}
class B extends A {}
interface C {
    public someMethod(A $a);
}

这样做是可能的,还是任何其他解决方法?

public class D implements C {
    public function someMethod(B $b) {
        // do something nice!
    }
}

不能以亚型来加强前提。

您试图破坏LSP

您不能使用PHP语言构造实现它。

另外,检查此示例

abstract class A {}
class B extends A {}
abstract class C {
    public function __construct(A $a) {}
}
class D extends C {
    public function __construct(B $b) {
        // do something nice!
    }
}

它仅适用于__construct

最新更新