【发布时间】:2016-12-09 12:24:06
【问题描述】:
我有以下接口/类:
class Part {}
class Engine extends Part{}
interface CarsInterface {
public function selectTimeLine(Part $object);
}
abstract class Car implements CarsInterface {}
class Hybrid extends Car {
public function selectTimeLine(Engine $object) {}
}
如果 Engine 是“Part”的子类,为什么我不能在子签名(混合类)中使用 Engine 对象(我知道它在 Java 中可能......)
在 PHP 中实现此功能的正确方法是什么? 谢谢
【问题讨论】:
-
有几个问题可以解决这个问题。这似乎是最有前途的,建议使用 instanceof:programmers.stackexchange.com/questions/227766/… 这是 SO 上的一个:stackoverflow.com/questions/13423494/… 您最好的选择可能是从参数声明中删除类型并使用
instanceof。 -
@MontgomeryJean 我在环顾四周时看到了第二个答案......但是你能详细说明“instanceof”你能举个例子吗?
-
没关系...看到了。
标签: php oop inheritance abstract-class signature