2012-08-15 173 views
0

我有一个名为Post的实体类。 Post的父项基于一个名为AbstractPost的抽象类。 AbstractPost有一个变量“作者”,其设置者的签名是在一个名为PostInterface的接口中定义的。扩展一个抽象类来扩展另一个抽象类,并且需要重写父抽象类实现的接口

我处于一个场景,我需要覆盖作者的制定者,但不想修改父母(ofcourse)。

这些是父类:

class Post extends AbstractPost 
abstract class AbstractPost implements PostInterface 
interface PostInterface 

我有以下类别:

class MyPost extends MyAbstractPost 
abstract class MyAbstractPost extends AbstractPost implements MyPostInterface 
interface MyPostInterface extends PostInterface 

但是,我得到的错误:

Fatal error: Declaration of MyAbstractPost::setAuthor() must be compatible with that of PostInterface::setAuthor()

我读过的孩子继承父类的“实现”部分(这里有什么是正确的行话?),所以我想知道如何重写那个。或者我不以正确的方式扩展/实施?

谢谢!

+0

在setAuthor方法中究竟需要改变什么?由于您在界面中定义了方法签名,而您的其他类未正确实施该方法,因此会出现该错误。你可以在错误信息中提到的接口和抽象类中发布代码吗? – martynthewolf 2012-08-15 08:47:05

+0

你不能。如果你有 - 这是一种设计气味 - 你将需要引入一种新的代理方法。 – 2012-08-15 08:47:50

+0

@ delete-me-please好的,我该怎么做? – 2012-08-15 08:51:52

回答

0

答案是否定的。

重载方法签名失败了接口的目的。