Witam!
Moim zadaniem było napisanie własnej kolekcji przechowującej elementy w kolejności rosnącej. Następnie, miałem utworzyć hierarchię klas (np. żołnierze) tak, aby po dodaniu obiektów do kolekcji, uporządkował je rosnąco (według stopni).
public class Kolekcja <T extends Comparable<T>>
{
public class Wezel
{
T obj;
Wezel nastepny = null;
}
Wezel lista = new Wezel();
public Wezel dodaj(T element)
{
lista = dodaj(element, lista);
return lista;
}
private Wezel dodaj(T element, Wezel wezel)
{
Wezel tymczasowy = new Wezel();
if(wezel.obj == null || wezel.obj.compareTo(element) >= 0)
{
tymczasowy.obj = element;
tymczasowy.nastepny = wezel;
wezel = tymczasowy;
}
else
{
wezel.nastepny = dodaj(element,wezel.nastepny);
}
return wezel;
}
public void wypisz()
{
Wezel tymczasowy = new Wezel();
tymczasowy = lista;
while(tymczasowy.nastepny != null)
{
System.out.println(tymczasowy.obj);
tymczasowy = tymczasowy.nastepny;
}
}
}
A tu klasa abstrakcyjna Żołnierz
public abstract class Zolnierz implements Comparable<Zolnierz>
{
Integer stopien = 0;
@Override
public abstract int compareTo(Zolnierz zol);
}
I przykładowo Kapitan
public class Kapitan extends Zolnierz
{
Integer stopien = 3;
@Override
public int compareTo(Zolnierz zol)
{
return (stopien.compareTo(zol.stopien));
}
}
Dodając do mojej kolekcji kapitana, nie jest brany pod uwagę jego stopień (=3), tylko stopień z klasy abstrakcyjnej żołnierz (=0). Bardzo proszę o wskazówki.