有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

maven java错误:方法不重写或实现超类型中的方法

我有3个类,配置如下: Class1有几种方法,其中一些是抽象的:

package package1;

public abstract class class1{
    protected abstract void methodX();

    public boolean methodY(){
        //method implementation
    }

    public String thisIsTheMethodThatMatters(){
        //method implementation
    }
}

接下来,来自同一个包的class2扩展了class1,覆盖了它的抽象方法,并添加了一些其他方法:

package package1;

public class class2 extends class1{
    @Override
    protected final void methodX(){
        //method implementation
    }

    public boolean methodZ(){
        //method implementation
    }
}

最后,来自不同包的class3扩展了class2并重写了class1中的方法:

package package2;

import package1.class2;

public class class3 extends class2{
    @Override
    public String thisIsTheMethodThatMatters(){
        //method implementation
    }
}

我使用的是Eclipse,它在编码时没有检测到任何错误。 我正在使用Maven Build构建项目,但构建失败,因为这是MethodThatMatters()不会覆盖或实现超类型中的方法 我确保package1是在package2之前构建的,因此我认为问题不存在


共 (1) 个答案

  1. # 1 楼答案

    如果您在class1中使用protected as access修饰符定义了方法(ThisTheMethodThatMatters),则可能会发生这种情况。换句话说,如果方法的签名是

    protected String thisIsTheMethodThatMatters()
    

    然后您将得到错误,因为基于上述场景,class3不会继承该方法