2013-10-28 4 views
0

나는 다음과 같은 코드가 :이 코드는 다음과 같은 오류가 표시방법은 인터페이스 프로토 타입을 일치하지만 대체하지 않습니다

public interface StackInterface<T> { 
    public T pop(); 
    public void push(T n); 
} 


public class myStack<T> implements StackInterface<Node<T>> { 
    Node<T> head; 
    Node<T> next; 
    Node<T> tail; 
    public myStack(T t) { 
     head = new Node<T>(t); 
     head.next = null; 
     tail=head; 
    } 

public myStack() { 
    head = null; 
    tail=head; 
} 

public Node<T> pop() { 
    if(head==null) { 
     return null; 
    } 
    Node<T> t= head; 
    head=head.next; 
    return t; 
} 

public void push(T n) { 
    Node<T> t = head; 
    head = new Node<T>(n); 
    head.next = t; 
} 

} 

: 클래스 선언 라인에

을; 메서드가 public void push (T n)를 구현하지 않는다고 말합니다. 및 public void push (T n) 행에 다음과 같이 표시됩니다.

myStack의 메소드 푸시는 StackInterface의 푸시와 동일한 삭제 기능을 가지고 있지만 무시하지는 않습니다.

프로토 타입 프로토 타입은 동일합니다. @Override를 추가하면 아무런 효과가 없습니다. 왜 이런 일이 일어나는 걸까요? 당신이 StackInterface<Node<T>>을 구현하기 때문에

+0

푸시 서명이 '공개 무효 푸시 (노드 n)'여야합니다. – Radiodef

+0

답장을 보내 주셔서 감사합니다. 그 오류를 없애 ...하지만 여전히 내 의도 된 기능에 없습니다. 인터페이스, myStack 및 노드에 다른 일반 기능 (아마도 U)을 추가하여 작동시켜야합니까? –

+0

글쎄, 당신이 pushing/poping으로 LinkedList analog를 만들고자하는 것처럼 보이지만 뭔가 빠져 있지 않으면 목록이 보이지 않습니다. 어쩌면 당신은 질문을 편집해서 새로운 문제를 반영하도록해야합니다. 당신이하고 싶은 것을 완전히 확신하지 못하기 때문입니다. Node가 자신의 클래스이고 어떤 종류의리스트 자체가 아닌 한? – Radiodef

답변

0

는, 푸시 방법은이 방법을 구현해야 할

public void push(Node<T> n) { 
} 
1

할 필요가, 당신의 템플릿과 일치합니다.

public class myStack<T> implements StackInterface<T> 
+0

+1 Node의 사용은 구현 선택이므로 API를 통해 볼 수 없습니다. 노드 이 아닌 T의 스택이 있습니다. – Bohemian