In caso di overriding viene sempre eseguito il metodo della classe a cui appartiene l' oggetto.
Io, sapendo che esiste già ma per puro esercizio, ho provato a fare una classe Lista che non contiene campi se non gli elementi successivi della lista.
Poi una classe Array (che per essere precisi non è un array, ma una lista di interi, solo che non sapevo come chiamarla) che eredita dalla classe Lista e aggiunge i campi elem corrispondenti ai valori interi dei singoli elementi della lista.
Così si è facilitati perchè la classe Lista contiene già metodi per aggiungere elementi, se ad esempio voglio aggiungere un elemento a un oggetto di tipo Array, mi basta chiamare il metodo aggiungi della superclasse Lista, e poi aggiungere anche il singolo elemento al nuovo elemento che ho aggiunto.
Il problema è che non capisco, in caso di overriding, come sia possibile chiamare il metodo aggiungi della superclasse Lista.
Allora qui ho il codice della classe Lista:
Qui invece ho il codice (incompleto) della classe Array:codice:/** Realizzazione di una lista senza campi * I campi andranno poi aggiunti in caso si erediti da questa classe */ public class Lista { private Lista prox; public Lista() { prox=this; } public Lista primo() { return prox; } public Lista ultimo() { Lista ptr; ptr=prox; while(ptr!=this) ptr=ptr.prox; return ptr; } public boolean cancella(Lista elem) /** elem è l' elemento da cancellare */ { boolean result=false; Lista ptr,prev; ptr=this.prox; prev=this; while(ptr!=this && result==false) { if(ptr==elem) result=true; else { prev=ptr; ptr=ptr.prox; } } if(result==true) { prev.prox=ptr.prox; } return result; } public boolean aggiungi(Lista elem) /** elem è l' elemento dopo il quale va aggiunto il nuovo elemento */ { boolean result=false; Lista ptr,temp; ptr=this.prox; while(ptr!=this && result==false) { if(ptr==elem) result=true; else ptr=ptr.prox; } if(result==true) { temp=ptr.prox; ptr.prox=new Lista(); ptr=ptr.prox; ptr.prox=temp; } return result; } }
codice:public class Array extends Lista { private int elem; public boolean aggiungi(Lista elem, int valore) { boolean result=false; /* Qui dovrei chiamare il metodo aggiungi della superclasse Lista */ } }

Rispondi quotando
