2013-10-28 2 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) говорится:

Метод push myStack имеет то же стирание, что и push StackInterface, но не отменяет его.

Прототипы метода идентичны; добавление @Override ничего не делает. Почему это происходит?

+0

Похоже, что сигнатура push должна быть «public void push» (Node n) '? – Radiodef

+0

Спасибо за ответ; который избавился от ошибки ... но все же я не в своей предполагаемой функциональности. Должен ли я добавить еще один общий, возможно, U в интерфейс, myStack и Node, чтобы заставить его работать? –

+0

Ну, похоже, вы пытаетесь создать аналог LinkedList с нажатием/выталкиванием, но я не вижу список, если я не пропущу что-то. Может быть, вы должны отредактировать вопрос, чтобы он отражал новую проблему, поскольку я не совсем уверен, что вы хотите сделать. Если Node не является вашим собственным классом и не является каким-то списком? – Radiodef

ответ

0

Поскольку вы реализуете StackInterface<Node<T>>, метод толчок должен быть

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

Вы должны реализующий этот способ, то ваши шаблоны матчей.

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

+1 Использование узла - это выбор реализации и не должен быть видимым через API. У вас есть стек T, а не узла Bohemian

Смежные вопросы