我对面向对象的编程有一些疑问。
想象一下这种情况:
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
。