Superclasse (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Aggiunta informazioni, fonti e voci correlate
tolti wikilink dai titoli (collegamenti ora presenti nel testo)
 
(41 versioni intermedie di 15 utenti non mostrate)
Riga 1:
{{S|programmazione}}
'''Superclasse''' è un termine utilizzato nella [[programmazione orientata agli oggetti]] per indicare una [[classe (informatica)|classe]] generica, non necessariamente [[classe astratta|astratta]], che vienepuò essere estesa da un'altra,una chiamatao più [[sottoclasse (informatica)|sottoclassi]], pero funzionalitàclassi piùfiglie, che ne rappresentano circoscrittedelle eversioni approfonditespecializzate.
Le funzionalità della superclasse vengono ereditate da tutte le classi figlie, che possono aggiungerne di nuove. I metodi pubblici vengono ereditati dalla sottoclasse, ma quest'ultima può modificarli a seconda delle necessità; tale fenomeno è definito [[overriding]].
La superclasse contiene funzionalità che vengono utilizzate e/o estese da tutte le classi figlie.
 
==Esempio di utilizzo==
Un esempio di utilizzo di una classe astratta'''superclasse''' è una casellaclasse della''Veicolo'' grigliacon dideterminati unmetodi semplicee [[videogioco|gioco]] bidimensionale. Una casella potrebbe far parte di un sentierovariabili, acqua,dalla muriquale esi viaestendono discorrendo,diverse ma va rappresentata pur sempreclassi come un oggetto di''Macchina'' tipoo ''CasellaMoto''. LaQueste soluzioneultime èereditano utilizzarele unavariabili classeed ''Casella''i comemetodi superclassedi eVeicolo leai casellequali ''CasellaSentiero'',si ''CasellaAcqua''aggiungono le variabili e ''CasellaMuro''i comemetodi classipropri derivatedella dalla ''Casella''classe. Le modalità con cui si rappresenta questo legame di [[ereditarietà (informatica)|ereditarietà]] variano a seconda del linguaggio usato.
 
==[[Linguaggio Java|Java]]==
 
Nella programmazione in java[[Linguaggio Java|Java]] le classi ''figlie'' ereditano i metodi e glile [[attributi]](variabili) della superclasse. Nel caso in cui vi siano metodi o attributi con lo stesso nome e con gli stessi parametri nella superclasse e nella sottoclasse il metodo o attributo della sottoclasse sovrascrive quello della superclasse.
===Esempio===
<sourcesyntaxhighlight lang="Java">
public class Casella{
public voidclass stampa()Veicolo{
public String targa;
System.out.println("stampa proveniente da Casella");//stampa la stringa tra parentesi
public int cilindrata;
public Veicolo(String targa, int cilindrata){
this.targa=targa;
this.cilindrata=cilindrata;
}
public void stampa(){
System.out.println("targa: "+targa);//stampo la targa
System.out.println("cilindrata: "+cilindrata);//stampo la cilindrata
}
}
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="Java">
public class CasellaSentieroMacchina extends CasellaVeicolo{ // creo la sottoclasse CasellaSentieroMacchina
public voidint stampa(){numeroPorte;
public Macchina(int cilindrata, String targa,int numeroPorte){//definisco il costruttore
System.out.println("stampa proveniente da CasellaSentiero");
super(targa,cilindrata);//questa istruzione deve essere necessariamente la prima del costruttore
//con il costruttore vengono passati i valori dei parametri ricevuti in input
this.numeroPorte=numeroPorte;//passo il valore del parametro nella variabile dell'oggetto appena creato
}
public void stampa(){
super.stampa();//richiamo il metodo stampa della superclasse
System.out.println("numero porte: "+numeroPorte);//stampo il numero delle porte
}
}
</syntaxhighlight>
</source>
In questo esempio, se viene richiamato il metodo '''''stampa();'''''; in base all'overriding, il risultato a video sarà ''stampacomprende provenientela datarga, CasellaSentiero''.la cilindrata e il numero delle porte.
 
==Bibliografia==
*{{cita libro|Fabrizia|Scorzoni|Informatica Programmazione in Java|2009|Loescher|Torino|ISBN=9788884330307978-88-8433-030-7}}
 
==Voci correlate==
* [[Overriding]]
 
* [[Classe (informatica)]]
* [[Classe astratta]]
* [[Sottoclasse (informatica)|Sottoclasse]]
* [[Costruttore (informatica)]]
* [[Java (linguaggio di programmazione)]]
 
==Collegamenti esterni==
* {{cita web|url=http://www.diit.unict.it/users/alongheu/informaticaIV/03_ereditarieta.pdf|titolo=Ereditarietà e caratteristiche della superclasse|sito=DIIT|accesso=29 aprile 2014}}
 
{{Portale|informatica}}