【发布时间】:2011-06-01 19:23:30
【问题描述】:
我认为在代码示例中看到问题比首先编写问题要容易得多。这是我的php代码:
<?php
interface AnInterface
{
public function method();
}
class AClass implements AnInterface
{
public function method()
{
echo __METHOD__;
}
}
abstract class AnAbstractClass
{
abstract public function method( AnInterface $Object );
}
class ConcreteClass extends AnAbstractClass
{
public function method( AClass $Object )
{
$Object->method();
}
}
$Object1 = new ConcreteClass();
$Object2 = new AClass();
$Object1->method( $Object2 );
以上代码导致如下错误:
致命错误:ConcreteClass::method() 的声明必须与 AnAbstractClass::method() 的声明兼容
问题是 php 似乎没有将 AnAbstractClass::method 和 ConcreteClass::method 的签名识别为兼容的。难道我做错了什么?谢谢!
【问题讨论】:
-
请,请养成发布代码生成的错误消息的习惯。发布代码而不发布输出(或错误)是没有用的。
标签: php interface types abstract-class