Die Absicht war, Abhängigkeiten zwischen Implementierungen von Klassen zu reduzieren. interfaces sind ein moderneres Mittel zum gleichen Zweck.
Beispiel http://java.sun.com/j2se/1.5.0/docs/api/
interface List<E>
{ void add(E o); E get(int i); .. }
class ArrayList<E>
implements List<E> { .. }
List<String> ls = new ArrayList<String> ();
// oder: new LinkedList<String> ();
ls.add ("foo");
System.out.println (ls.get (0));
grundsätzlich alle Variablen über Interface deklarieren!