2017-02-27 4 views
1

나는 IVertex<T>을 구현하는 클래스 Vertex<T>을 가지고 있는데, 이는 Comparable을 구현합니다. , 내 코드를 컴파일 할 때마다, 나는 오류가 발생합니다 :추상 클래스가 아닌 클래스는 Comparable에서 abstract 메서드 compareTo를 재정의 할 수 없습니까?

Vertex is not abstract and does not override abstract method compareTo(IVertex) in Comparable

이 가진 문제는 그 선생님이 지시 한 것입니다 나는 인터페이스 IVertex 내에서의 코드 중 하나를 변경할 수 있다는 것입니다. 이 문제를 어떻게 해결할 수 있습니까?

정점 : 나는 아래에있는 내 코드를 포함했다

package student_solution; 


import graph_entities.*; 

import java.util.*; 

public class Vertex<T> implements IVertex<T>{ 

    // Add an edge to this vertex. 

    public void addEdge(IEdge<T> edge){ 

    } 

    // We get all the edges emanating from this vertex: 

    public Collection< IEdge<T> > getSuccessors(){ 

    } 

    // See class Label for an an explanation: 

    public Label<T> getLabel(){ 

    } 

    public void setLabel(Label<T> label){ 

    } 

    } 

IVertex :

package graph_entities; 

import java.util.Collection; 

public interface IVertex<T> extends Comparable<IVertex<T>> 
{ 

    // Add an edge to this vertex. 

    public void addEdge(IEdge<T> edge); 

    // We get all the edges emanating from this vertex: 

public Collection< IEdge<T> > getSuccessors(); 

    // See class Label for an an explanation: 

public Label<T> getLabel(); 

public void setLabel(Label<T> label); 

} 

사전에 감사합니다!

+2

글쎄, 당신이 (즉'공공 INT은 compareTo (IVertex 을 구현하는 것을 잊었다 방법을 구현 V)'컴파일러는 클래스의 compareTo 메소드를 구현해야 함을 말하고있다 –

+0

-.. 그게 다야 – duffymo

+0

더 많은 오류 메시지를 읽고 (IVertex가 아니라'Vertex'라고 말합니다.) – EJP

답변

2

오류가 암시 하듯이 클래스는 Comparable을 확장하는 interface을 구현합니다. 이제 수업을 구체적으로 만들기 위해서 override 모든 수업을 interfaces에 구현해야합니다.

따라서, 귀하의 경우에, 당신이 할 필요가 :, 정점 class에서 예컨대을 compareTo 메소드를 오버라이드 (override)하는 것입니다

@Override 
public int compareTo(IVertex<T> o) { 
    // implementation 
    return 0; 
} 

Here의 인터페이스와 상속에 대한 오라클의 설명서를 참조하십시오.

+0

예, 대부분 구현하지만 구현해야하는 메소드는 compareTo (T)가 아니라 compareTo (IVertex )입니다. 디자인 문제는 구현 방식에 따라 다를 수 있습니다. –

+0

@JohnBollinger가 그것을 지적 해 주셔서 감사합니다. 나는 그것을 놓쳤습니다. (예, 디자인 문제로 판명 될 수도 있지만 OP는 변경하지 말라고 지시합니다. '인터페이스', 우리는 많이 할 수 없다. –

+0

고마워! 내가 C를 보았을 때 나는 당황했다. 오차 선 오류. 초보자가 실수했다. – assassinweed2

관련 문제