Di seguito è riportato il diagramma, dove, se consideriamo solo le implementazioni di List,
AbstractListmantieneilcomportamentodibasedellalista.PerintrodurrelanuovaimplementazioneclassMyList(diciamo)sipuòereditareAbstractListesovrascrivere(senecessario)imetodirichiesti.EstendendoAbstractList.Inoltre,classMyListstarispettandoilcontrattopercomportarsicomeunelenco.classMyListextendsAbstractList{..}Gliutentipossonoutilizzarelagerarchiadiraccolta,come,
AbstractListl=newArrayList<String>();l.add("one"); //execute ArrayList's add method-
Una classe può anche mantenere una relazione di composizione con qualsiasi implementazione di lista (in fase di esecuzione), avendo
AbstractList l;come membro, che viene popolato in fase di runtime, con qualsiasi implementazione di lista.
Quindi
Mi piacerebbe capire la ragione chiara, perché viene aggiunto ulteriormente interface List<E> ?
note1: L'intenzione è capire, come usare l'interfaccia. Questa non è una domanda duplicata, perché vengono utilizzate sia la classe astratta che l'interfaccia. Non ho usato la parola "invece di" o "piuttosto"
note2: Non entriamo nei metodi predefiniti di java-8, poiché la gerarchia di raccolta precedente è stata progettata con tutto ciò che è stato fornito fino a java-7
