我的類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
}
原始方法addEdge(E e, V v, V v1)
是在KTree
類addEdge(E e, V v, V v1)
接口UndirectedGraph<V,E>
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
}
定義引發錯誤
'addEdge(E,V,V)' 在 'KTree' 與 'addEdge(E,V,V)' 中 'GraphClass' 衝突;這兩種方法具有相同的擦除,但既沒有覆蓋 的其他
在KTree
的@override引發錯誤
覆蓋方法不自其超
我明白爲什麼他們有相同類型的擦除,但我認爲如果我添加@override它將默認爲所有KTree
實例的該版本的方法。我想要做的只是重寫GraphClass
中的方法,但不知道爲什麼它不能識別@override。這是否與覆蓋已覆蓋接口方法的方法有關?