如何具体化抽象类方法的返回类型?
为什么这样做:
interface I {}
class A implements I {}
abstract class CA {
abstract public function foo() : I;
}
class C extends CA {
public function foo() : A
{
return new A;
}
}
(new C)->foo();
导致Fatal error: Declaration of C::foo(): A must be compatible with CA::foo(): I
?
由于返回类型A
满足了实现接口I
的要求。