为什么不扩展使用工具?

时间:2013-01-10 04:34:50

标签: java inheritance multiple-inheritance

我知道它应该有效,但事实并非如此。我有一个类继承定义如下:

public class VisitManagementForm extends FormWithTitle implements Property.ValueChangeListener {

现在它只允许覆盖extends中的方法,它没有,甚至不允许我从Property.ValueChangeListener实现/覆盖方法。这是为什么? 我用扩展切换了工具的位置,然后只有工具工作,扩展似乎不可见。

我最近将项目转为Maven,Maven是否可能导致这种疯狂?也许我需要指定一些东西来允许它吗?或者我在这里错过了一些东西?

Property.ValueChangeListener应该强制实现这样的方法:

    @Override
public void valueChange(ValueChangeEvent event) {
    // TODO Auto-generated method stub

}

但是现在我得到它需要覆盖或实现超类型方法的错误...

编辑:我正在使用Java 1.6进行项目。

编辑:如果我尝试实现其他东西(同时保留扩展),它建议我实现方法,但如果我实现ValueChangeListener它不建议我实现任何东西,但如果你然后删除扩展并离开只实现ValueChangeListener,然后建议再次实现它的方法。但只要我保留扩展,我似乎得到了上面提到的错误。

3 个答案:

答案 0 :(得分:3)

  

请注意,您无法将@Override注释添加到在Java 5中实现接口的方法 - 它会生成错误。它在Java 6中是允许的

Source

答案 1 :(得分:2)

您正在做的是非法多重继承。查看this example from of Java Language specification

答案 2 :(得分:0)

如果这是在切换到maven之前有效的代码,原因可能是maven编译器插件默认将源版本设置为1.5,这意味着,正如另一个答案中已经提到的那样,你不能使用@Override用于接口方法。