我试图将一个祖先(A)分配给后代(B)类型变量,并在PHP的祖先上调用后代方法,但我无法使其正常工作。
class B extends A{
public function c(){ echo 'B.c'}
}
我试过了:
重写B
构造函数
class B extends A{
public function __construct($parent)
{
$this = $parent;
}
...
}
$this
无法重写,所以这是不行的。
这件事我忘记了怎么称呼
function d(B $b){
$b = new A();
b.c();
}
显式类型转换
function d(){
$b = (B) new A();
b.c();
}
或
function d(){
$b = settype(new A(),'B');
b.c()
}
这不起作用,因为settype
仅允许某些类型而非其他用户定义的对象类型。