当前位置: 首页 > 知识库问答 >
问题:

方法未从抽象超类重写

韩麒
2023-03-14

我的类KTree正在扩展抽象类GraphClass,但无法重写GraphClass中定义的一个方法。

public abstract class GraphClass<V extends VertexInterface<?> ,E extends EdgeInterFace <V,?>> implements UndirectedGraph<V,E>{
//other methods

    @Override
    public boolean addEdge(E e, V v, V v1) {
        return false;
    }

//more methods
}

原始方法添加(E E,V V,V v1)在界面无向图中定义

public class KTree<V extends VertexInterface<?> ,E extends EdgeInterFace <V,?>> extends GraphClass {
//other methods

    @Override
    public boolean addEdge(E e, V v, V v1) {

        if(!this.Nodes.contains(v) || !this.Nodes.contains(v1) || this.Edges.containsValue(e)){
            return false;
        }

        v.setDegree(v.getDegree()+1);
        v1.setDegree(v1.getDegree()+1);

        this.Edges.put(e.getHashCode(),e);

        return true;
    }

//more methods
}

KTree类中,addEdge(E E,V V,V v1)抛出错误

“KTree”中的“addEdge(E,V,V)”与“GraphClass”中的“addEdge(E,V,V)”冲突;两种方法具有相同的擦除,但都不重写另一种方法

KTree中的@override抛出错误

方法不从其超类重写

我理解为什么它们有相同类型的擦除,但我认为如果我添加了@覆盖,那么对于所有的KTree实例,它将默认为该版本的方法。我想做的只是重写GraphClass中的方法,但不知道为什么它不能识别@重写。这是否与重写已经重写接口方法的方法有关?

共有2个答案

胡意致
2023-03-14

我认为这是因为您在KTree声明中使用了原始形式的GraphClass(没有类型参数)。

它应该是:

public class KTree<V extends VertexInterface<?> ,E extends EdgeInterFace <V,?>> extends GraphClass<V, E>
丌官信厚
2023-03-14

问题是因为KTree中定义的EVGraphClass中定义的不同。基本上,您继承了GraphClass的原始形式。将KTree的声明更改为:

public class KTree<V extends VertexInterface<?>, E extends EdgeInterFace <V, ?>> extends GraphClass<V, E>

它应该会起作用。

 类似资料:
  • 大家好,我有这个主课堂 错误:(42,8)错误:Home不是抽象的,并且不会覆盖OnFragmentInteractionListener中的onFragmentInteract(String)抽象方法 我创建了一个导航抽屉,并希望有一个新的片段来显示另一个家庭活动的内容。 Android Studio告诉我做个家。类抽象或实现抽象方法。 里面: 我那样做了,但是什么也没有改变。我不能让home类

  • 问题内容: 如何在C ++中创建一个抽象类,该抽象类具有一些我想在子类中重写的抽象方法?该文件应如何显示?是否有一个,如果是的话,应该看起来如何? 在Java中,它看起来像这样: 对于我来说,将此代码转换为C ++就足够了。 编辑: 我创建了代码,但是当我尝试遍历对象时,出现以下错误: 使用此代码: 问题答案: 在Java中,除非您声明了所有方法,否则默认情况下所有方法都是默认方法。在C ++中,

  • 这似乎是一个基本问题。但在采访前需要澄清。 我在抽象类中有一个非抽象方法。它的具体类重写了该方法。但我想调用父类的原始方法来调用,而不是重写方法。有什么办法吗? 据我所知,没有办法调用原始方法?

  • 我试图在另一个项目中构建这个类的具体实现,该项目是一个应用程序项目,并引用了库项目。子类中的方法实现标记为“@override”,Eclipse给出了以下错误: MySubClass类型的方法myMethod()必须重写或实现一个超类型方法 我删除“@override”,错误变成警告: