Superclasse (informatica)

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search

Superclasse è un termine utilizzato nella programmazione orientata agli oggetti per indicare una classe generica, non necessariamente astratta, che può essere estesa da una o più sottoclassi, o classi figlie, che ne rappresentano delle versioni specializzate. 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.

Esempio di utilizzo[modifica | modifica wikitesto]

Un esempio di utilizzo di una superclasse è una classe Veicolo con determinati metodi e variabili, dalla quale si estendono diverse classi come Macchina o Moto. Queste ultime ereditano le variabili ed i metodi di Veicolo ai quali si aggiungono le variabili e i metodi propri della classe. Le modalità con cui si rappresenta questo legame di ereditarietà variano a seconda del linguaggio usato.

Java[modifica | modifica wikitesto]

Nella programmazione in java le classi figlie ereditano i metodi e le 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[modifica | modifica wikitesto]

   public class Veicolo{
          public String targa;
          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
          }
      }
   public class Macchina extends Veicolo{ // creo la sottoclasse Macchina
          public int numeroPorte;
          public Macchina(int cilindrata, String targa,int numeroPorte){//definisco il costruttore 
               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
          }
      }

In questo esempio, se viene richiamato il metodo stampa(); in base all'overriding, il risultato a video sarà comprende la targa, la cilindrata e il numero delle porte.

Bibliografia[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica